問題タブ [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.
mongodb - Mongo が IXSCAN の実行後に FETCH で null フィルターをクエリする理由
Mongo Documentationによると、
{ item : null }
クエリは、値が であるフィールドを含むドキュメント、またはそのフィールドを含まないドキュメントに 一致item
しnull
ますitem
。
これに関するドキュメントは見つかりませんが、私が知る限り、両方のケース (値が存在null
するか、フィールドが欠落している) が としてインデックスに格納されnull
ます。
したがってdb.orders.createIndex({item: 1})
、次にを実行すると、値が であるフィールドを含む、またはフィールドを含まないすべてのドキュメントと、それらのドキュメントのみが検索されることdb.orders.find({item: null})
が期待されます。IXSCAN
item
null
item
では、なぜdb.orders.find({item: null}).explain()
を実行filter: {item: {$eq: null}}
したFETCH
後にステージで実行するのIXSCAN
ですか? フィルターで除外する必要がある可能性のあるドキュメントはどれですか?
undefined
おそらく値は としてインデックス化されると思いましnull
たが、単純な実験でこれが除外されます。
postgresql - postgresql 9.4 で GIN インデックス スキャンを強制する
私は場所のテーブルを持っています(約2900万行)
次のクエリがうまく機能することを望みます。
しかし、作成されたクエリ プランでは、シーケンシャル スキャンが使用されていることがわかります。
シーケンシャルスキャン強制OFF時
クエリ プランで gin インデックスが使用されるようになりました。
コスト設定を以下に貼り付けました。
前述のクエリに順次スキャンを使用しないソリューションと、順次スキャンをオフに設定するなどのトリックを探しています。
の値を 20 に更新しようとしましたseq_page_cost
が、クエリ プランは同じままでした。