問題タブ [query-planner]

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 投票する
2 に答える
1466 参照

sql - PostgreSQL EXPLAIN の読み方、順序: トップダウンまたはボトムアップ?

以下は、 explain.depesz.comの計画例です。

これらの操作はどのような順序で実行されますか? 一気飲み?トップダウン?

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

sql - OR を使用した JOIN - 入れ子になったループを選択するクエリ プランナー

MS SQL Server クエリ プランナーが、OR 条件を使用した JOIN のユニオンを選択するのではなく、入れ子になったループを作成するのはなぜでしょうか。

注:SOで検索すると、MSSQL固有ではないようです

例えば

私の場合は6分かかります(OneとTwoの両方が両方のテーブルでインデックス化されています)

しかし

2秒かかります。

最初の処理に時間がかかる理由はわかっていますが (2 つのユニオンがインデックスを使用する入れ子になったループのため)、クエリ プランナーが UNION を実行プランとして選択しないのはなぜでしょうか?

UNION を使用していない UNION を使用する場合に注意する必要がある警告はありますか?

このロジックがクエリ プランナーに実装されていないのはなぜですか?

クエリプランナーのコードをよりシンプルに保つためだけですか (おそらくすでにかなり複雑なので)、最適化に取り組まなかったのですか、それとも私が気付いていない他の警告があるためですか?

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

postgresql - JOIN を追加すると、クエリ プランナーの動作が完全に変更されるのはなぜですか?

2 つのクエリがあります。

そしてもう1つと同じJOIN

これらのクエリは Django ORM によって生成されました。最初のものは 3 ミリ秒かかり、2 番目のものは 120 秒 (!) かかります。私はしましたVACUUM ANALYZE。以下EXPLAIN ANALYZEを与える:

クエリ プランナーがこのようになった原因は何ですか? 2 番目のクエリでインデックスが使用されないのはなぜですか?

ハッシュを無効にしようとしましたが、より複雑な方法が使用されました。

編集:

インデックスの詳細:

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

postgresql - この場合、Postgresql が複合インデックスで Index Only Scan を使用しないのはなぜですか?

私のテーブルには整数列「a」、「b」があります。"a" の異なる値はわずか (<30) ですが、各 "a" には膨大な数の異なる "b" が存在します (>10**7)。スピードアップするために、複合インデックス (a,b) を作成しました。私はそれを観察します

速く走る

速く走るが、

実行が (なんてこった) 遅く、同じことが次の場合にも当てはまります

説明を実行すると、高速クエリが使用することが説明されます

ただし、遅いクエリの場合は、シーケンシャル スキャンが使用されます。

これはなぜですか?Postgresql が後の 2 つのクエリに同じインデックスを使用しないのはなぜですか? クエリ プランナーの不完全性だけですか、それともインデックス オンリー スキャンを使用できないより深刻な理由がありますか?

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

indexing - クエリプランに推定行数が表示されないように、sqlite3 で何が変更されましたか?

バージョン 3.7.8 では、クエリ プランは次のようになりました。

しかし、3.8.10.2では

変化したこと?推定行数を再度表示するように設定できますか?

0 投票する
0 に答える
143 参照

mysql - クエリ プランのコストの混乱

制限数が異なる次のクエリでは、異なるクエリ プランと非常に異なるスキャン行が作成されます。

インデックスを持つテーブル:

異なる制限 (50 対 500) が異なるクエリ プランを作成し、スキャン行に大きな変化があるのはなぜですか?</p>

0 投票する
0 に答える
446 参照

sql-server - 日付変数を使用すると SQL Server ストアド プロシージャが非常に遅くなる

次のようなストアド プロシージャを SQL Server で実行しています。

これは、日付列のインデックスを無視しています。選択クエリを実行します。パラメーターを使用しても問題ありません。これに変更しても問題ありません。

クエリ全体を動的 SQL に変更したところ、問題なく動作するようになりました。

ここで何が起きてるの?

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

sql - *IN* 句のパラメータ数が変更された場合、データベース実行計画を再利用できますか?

IN 句に 10 個のパラメーターを指定してクエリを実行し、次に同じクエリを 20 個のパラメーターを使用して再度実行する場合、データベース サーバーは最初の実行から実行プランを再利用できますか、または毎回作成する必要がある新しい実行プランです。時間?