問題タブ [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.

0 投票する
3 に答える
506 参照

sql - 外部キー制約を再度有効にした後の実行プランの奇妙さ

nocheck外国の制約を設定して再度有効にした後、奇妙な問題が発生しました。

で使用されたものと同じ古い実行プランを取得してnocheckいます。

次のステートメントでチェックを再度追加した後でも、SQLサーバーが外部制約FKBtoAが無効になっているように実行プランを生成するのはなぜですか?


[UPDATE1]
これまでのところ、外部制約を削除して再読み込みすることは機能していました。

しかし、本当に大きなテーブルの場合、これはやり過ぎのようです-より良い方法はありますか?

[答え]

WITH CHECK古い実行プランを取得するには、次のような変更ステートメントを追加する必要がありました


これが完全なSQLステートメントです


SELECTこれは、各ステートメントごとの実行プランのスクリーンショットです。

外部キー制約を無効にする前
代替テキスト

外部キー制約を無効にした後
代替テキスト

外部キー制約を再度有効にした後
代替テキスト

0 投票する
6 に答える
95443 参照

sql - SQL Serverプラン:インデックススキャン/インデックスシークの違い

SQL Server実行プランでは、インデックススキャンとインデックスシークの違いは何ですか

私はSQLServer2005を使用しています。

0 投票する
1 に答える
1150 参照

sql-server - T-SQL スクリプトのデバッグ中のリアルタイム クエリ実行プラン

SQL Server 2008 と SSMS 2008 を使用しており、スクリプトをデバッグしています。まったく問題なくスクリプトを実行できますが、[実際の実行計画を含める] (実行計画に追加の結果タブを追加するボタン) のツールバー ボタンをクリックすると、デバッグできなくなります。

代わりに、[デバッグ] をクリックすると、デバッグが開始され、すぐに再び停止し、結果ペインにスレッドが正常に終了したことが示されます。

これをバグとして送信する必要がありますか、それともデバッグと実行計画の表示は本質的に連携しないのでしょうか (なぜそうしないのかはわかりませんが)。

0 投票する
2 に答える
531 参照

oracle - 実行プランのノードのコストを子よりも低くするにはどうすればよいですか?

実行プランのノードは、その子が実行された後にのみ実行できると常に考えていました。したがって、ノードの合計コストは、子ノードのコスト以上である必要があります。ただし、次の例のように、これが常に当てはまるとは限りません。

6行目と7行目のコストの違いを読み取る正しい方法は何ですか?

0 投票する
1 に答える
759 参照

mysql - mysql は私のインデックスを使用しているかどうか、および geokit のパフォーマンスを改善できますか?

Rails アプリケーションで geokit (acts_as_mappable) を使用していますが、多数のモデルがある場合、ラジアル検索または境界検索のパフォーマンスが大幅に低下します (私は 100 万から 200 万で試しましたが、問題は間違いなくこれよりも早く発生します) )。

Geokit は、テーブルの緯度と経度の列 (緯度と経度) に基づいてすべての計算を行います。パフォーマンスを向上させるために、ジオキットは通常、境界ボックスの「where」句を追加します。これは、パフォーマンスを向上させるために緯度と経度の組み合わせインデックスを使用することを目的としています。ただし、多数のモデルでは依然として非常に低速であり、バウンディング ボックス句はそれよりもはるかに役立つはずです。

私の質問は、mysql で lat/lng インデックスをより有効に活用したり、gekit sql クエリのパフォーマンスを向上させたりする方法はありますか? または、緯度/経度の複合インデックスをより役立つものにすることはできますか?

編集:私はこれをレールで動作させ、ソリューションをより詳細にここに書きました

その他の背景

たとえば、次のクエリは、特定の地点から 10 マイル以内にあるすべての場所を検索します。(返される結果の数を判断するためだけに .length を追加しました。これを geokit で表現するより適切な方法がありますが、より典型的な SQL クエリを強制したかったのです)。

Mac mini で約 14 秒かかります。説明プランはこちら

したがって、結果の桁数が 1135 であっても、mysql は 87554 行を調べています (境界ボックス内の実際の桁数はちょうど 1323 です)。

これらは、インデックスの統計です(これは、レール移行add_index :places, [:lat, :lng] で作成されます):

境界ボックスに対して同様のクエリを実行すると、はるかに単純なクエリになりますが、同様にパフォーマンスが低下するため、三角関数の計算にも関連していないようです。

同様の説明計画を提供します。

0 投票する
6 に答える
7331 参照

mysql - 他のデータベースでのEXPLAINSELECT

EXPLAIN SELECTクエリは、SQLの実行方法に関する情報を提供し、クエリ自体を実行して統計を分析する前に応答を改善するために追加する必要がある不足しているインデックスなどを分析する機会を提供するため、MySQLで非常に便利であることがわかりました。

私の質問は次のとおりです。MSSQL、Firebird、Ingresなどのデータベースで、同様のコマンドを使用できますか?

FirebirdにはPLANがありますが、単純な間違いを表示するために非常に長いクエリを実行しなければならないことが多いため、非常に弱いです。

よろしくお願いします、

マウロH.レギエリ

0 投票する
2 に答える
1053 参照

sql - MySQLは異常を説明します

次のクエリを検討してください。

私のラップトップでは、これは結果を返しません。私のサーバーでまったく同じ(ダンプされた)データベースを使用すると、結果が返されます。

ラップトップでEXPLAINを実行すると、これが得られます

私の他のすべてのサーバーではこれを提供します(ref列の違いに注意してください)

結合、サブクエリ、または最後の group-by のいずれかを削除すると、期待どおりの結果が得られます。

これは構成の問題だと思いますが、これまでに見たことはありません。誰がこれを引き起こす可能性があるか知っていますか?

私のラップトップは、MySQL 5.0.41 で OSX 10.6 を実行しています。OSX 10.5.7 と MySQL 5.0.37 を実行している別のラップトップは正常に動作し、MySQL 5.0.27 を実行している Linux サーバーも同様です。

ref=func を使用した 1 つの説明計画と ref=odysseyB.CF.COMPANY_ID を使用した別の説明計画の違いを説明できる人はいますか?

ありがとう。

0 投票する
3 に答える
20507 参照

sql - Sqlite クエリの実行を分析するにはどうすればよいですか?

インデックスが正しいことを確認したいSqliteデータベースがあります。MS SQL アナライザーは、クエリの実行と使用されているインデックスを分析するのに優れています。

Sqlite 用の同様のツールはありますか?

0 投票する
8 に答える
9382 参照

sql - SQLクエリ、実行シーケンス

クエリにgroupby句とorderby句の両方がある場合、実行の後にSQLが続くシーケンスはどうなりますか。それはクエリ内の彼らの位置に依存しますか?