0

IBM DB2について勉強していて、アクセスタイプについて質問を受けました。

クエリで IN-list access 、 Index Scan 、 TS scan を決定する方法がよくわかりません。

たとえば、

SELECT * FROM T
 WHERE C1=1 AND C2 IN (1,2,3)
    AND C3>0 AND C4<100;

そうすると、クエリに IN 文が含まれているため、IN リスト アクセスになります。ただし、インデックスがある場合は、C1 と C3 またはインデックス スキャンである可能性があります。このクエリが「IN list access」であると言わなければならないのはなぜですか?

インデックス スキャンと TS スキャンの例を教えてください。

この部分が本当に分からない

4

1 に答える 1

1

取得したアクセス パスの種類を確認する唯一の方法は、 から出力を取得することですEXPLAIN PLAN。クエリを見て (利用可能なインデックス、列のカーディナリティなどを知らずに)、オプティマイザが何をするかを確実に知ることはできません。

DB2 のオプティマイザはコストベースであり、CPU、ディスク アクセス、およびメモリに関して最も効率的であると計算されるアクセス プランを選択します。EXPLAIN PLANまたは Visual Explain ツールを使用すると、オプティマイザーが何を選択するかを確認できます。

于 2012-11-18T23:57:11.620 に答える