問題タブ [sql-execution-plan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - MySQL Explain プランの「最適化されたテーブルを選択する」の意味
Select tables optimized away
MySQL Explain プラン の意味は何ですか?
注:explain plan
出力は読みやすくするために編集されています。
mysql - MySQLの遅いクエリ分析で私を助けてください
分析しようとしているこのmysqlクエリがあります。これは非常に遅く、ここのビジターテーブルは約50Kエントリであり、このクエリは返されません。Explainステートメントを試したところ、インデックスが使用可能であるにもかかわらず、訪問者テーブルでインデックスが使用されていないことがわかりました。今、これは私が解決するのに助けが必要な素晴らしいパズルです。ヒントをいただければ幸いです。
クエリ:
出力スクリーンショットの説明:http: //grab.by/grabs/9c3a629a25fc4e9ec0fa54355d4a092c.png
sql - これら 2 つの SQL クエリはすべての点で同等ですか (たとえば、推定実行計画と実際の実行計画)?
クエリ 1) == 2) は、推定クエリ プランと実際のプランのどちらですか? (統計はここで実際の計画に影響を与えることができますか?)
declare @cat int -- prc からの入力パラメータ
...
1)
2)
これらは論理的に同等であるべきであり、テーブルの実際の違いに関係なく、実行計画は常に同じであるべきだと私には思えます。また、結合、または場所に条件を追加したり、結合するテーブルを追加したりしても、これは変わりません。
これが正しくない場合はありますか?
sql - SQL実行プランの読み方に関する質問
クエリを実行し、実際の実行プランを含めました。サブツリーがインデックスシークの代わりにインデックススキャンを使用するため、私が興味を持っているハッシュマッチが1つあります。このハッシュマッチにマウスを合わせると、「ProbeResidual」というセクションがあります。私はこれが私が参加しているどんな価値観でもあると思っていました。私はここで正しいですか、それともそれが何を意味するのかについてのより良い説明がありますか?
私が持っていた2番目の質問は、それが使用するインデックスに関するものです。私の例では、この特定の結合が2つの列で結合していると確信しています。スキャンしているインデックスには、これらの列の両方と、結合で使用されていない別の列が含まれています。これにより、スキャンではなくインデックスシークが発生するという印象を受けました。私はこれを間違えていますか?
sql - 実行計画の再利用
次の「コード」を検討してください
以下を使用して、キャッシュされたクエリプランを調査します。
私の印象では、最初の「実行」は 2 つの単一の実行計画ではなく複合実行計画を生成し、それによって最初の実行で生成された実行計画を再利用する 2 番目の「実行」を無効にします。
私は正しいですか?
sql-server - SQL クエリ実行のショートカットまたはロジック?
私は3つのテーブルを持っています:
SmallTable
には、せいぜい数十件のレコードしかありません。BigTable
数百万あり、実際には、このデータベースのテーブルを同じサーバー上の別のデータベースのテーブルと UNIONS するビューです。
結合ロジックは次のとおりです。
平均結合サイズは数千の結果です。表示されるものはすべて索引付けされています。
ほとんどのSmallTable
レコードでは、flag1
とflag2
が に設定されて1
いるため、BigTable.text1 のインデックスにアクセスする必要さえありませんが、SQL Server はアクセスするため、コストのかかるインデックス スキャンとネスト ループが発生します。
との両方が に設定されている場合flag1
、を気にする必要がないことを SQL Server に示唆するより良い方法はありますか?flag2
1
text1
実際、これらの場合に BigTable への結合を完全に回避できれば (JoinTable は管理されているため、問題は発生しません)、このキー クエリはさらに高速になります。
php - PHP から Oracle SQL クエリの EXPLAIN PLAN FOR を取得するにはどうすればよいですか?
Windows XP で Oracle 10g Express を使用しており、PDO と Oracle Instant Client 10.2.0.4.0_4 で PHP 5.3.1 を実行している Macbook OS X 10.5.8 で、次のスクリプトを実行します。
問題ない。EXPLAIN PLAN
しかし、このクエリのレポートを取得する PHP スクリプトも書きたいと思っています。これを試すと、エラーが発生します。
(このテストでは、クエリ パラメータをハードコードされた整数リテラルに変更しました。)
を呼び出そうとすると、次のエラーが発生しますfetch()
。
ORA-24374: フェッチまたは実行とフェッチの前に定義が行われていません
これの説明は何EXPLAIN PLAN
ですか? PHP スクリプトからレポートを取得するにはどうすればよいですか? このエラーについて Web 検索を行いましたが、明確な説明が見つかりませんでした。
sql-server - SQL 実行計画とは何ですか? SQL 実行計画はどのように役立ちますか?
最近、SQL の実行計画を調べて、SQL のパフォーマンスを判断する必要があるという話をよく耳にします。ただし、この機能をどこから始めればよいのか、正確には何を意味するのかはよくわかりません。
実行計画が何をするのか、その制限は何か、それをどのように利用できるのか、または実行計画を実行するリソースへの指示についての適切な説明を探しています。
sql - MSSQL実行プランで「実行回数」を減らす方法
MS SQL ServerのSQLクエリの実行プランに表示される「実行数」を減らす方法を知っている人はいますか?
1つの本番サーバーで実行速度が遅いクエリがあります(他のサーバーは問題ありません)。実行プランを確認すると、最初のステップの1つがクラスター化インデックススキャンであることがわかります。正常に動作しているサーバーでは、このスキャンは1回実行されます。動作が遅いものは4回実行されます。
ここ(http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p2.aspx)を読んで、削減を試みる必要がありますが、これを行うためのヒントは見つかりません。
両方のサーバーは、同じバージョンのWindows(2003)とSQL Server(2000)を実行します。
どんな助けでもいただければ幸いです。
sql - 明示的なクエリでマテリアライズドビューを使用していないSQL 2005 Express
SQL Server 2005 の Express エディションには、最適な実行計画を推定する際にマテリアライズド ビュー (スキーマ バインド付き) が自動的に含まれないことを知っています。ただし、ビューが直接クエリされると、実際の実行計画に表示されるアンダーリング テーブルが表示されます。クエリで使用される具体化されたビューでクラスター化インデックスが作成されないのはなぜですか?
ビューのコードは次のとおりです。
そして、一意のクラスター化インデックスが oTextValue 列に作成されます。
ただし、次のようなクエリを実行すると:
...基になるテーブル (dbo.athObjects) が条件付きの実行プラン (oTypeID < 100) で使用されていることがわかります。athObjects テーブルの oTextValue 列にはインデックスがありません。条件を「< 'Alibabki'」に変更しても、インデックスは役に立ちません。
助けてくれてありがとう。