複数の列のインデックス (a、b、c) と 1 つの個別のインデックス d がある場合、クエリは b、a、c、d の順序を使用して、両方のインデックスが選択されるかどうかを確認します。このクエリでインデックスを選択するかどうか
2189 次
3 に答える
0
コストベースのオプティマイザ (DB2 など) は、テーブルとインデックス オブジェクトの統計を使用して、(A,B,C) インデックスと (D) インデックスのどちらが特定のクエリに適しているかを判断します。索引のカーディナリティー (索引内の固有値の数) は、RUNSTATS コマンドによって収集されるいくつかのデータ統計の 1 つであり、オプティマイザーが可能なアクセス・パスごとに相対的な I/O および CPU コストを見積もるのに役立ちます。Aaron Digulla の回答に記載されている Explain コマンドと db2expln 機能は、どのインデックスが選択されるかを理解するのに役立ちます。
于 2009-06-18T04:18:18.867 に答える
0
DB2 コマンドラインで、これを試してください。
db2 => explain plan for ...insert-query-here...
結果には、いつインデックスが使用され、いつ DB2 がフル テーブル スキャンを使用するかがわかります。
于 2009-02-25T12:04:07.513 に答える
0
a、b、c、d に変更すると、(a、b、c) インデックスが使用されます。
d、b、a、c (または d で始まるもの) に変更すると、(d) インデックスが選択されます。
基本的には、使用したいインデックスと同じ順序で列を使用してください。
于 2009-02-25T12:06:49.347 に答える