SQLチューニング

  • 投稿日:
  • カテゴリ:

この前書いたSQLチューニングの結果を。
DBはOracle9iR2。
こーいうのはWikiの方に書くべきかな。。

テーブルは以下のように定義。
NAME VARCHAR2(20)
POINT NUMBER(10,0)  ← こいつにINDEX張ってある

データ量は10万件
ObjectBrowserのデータ生成機能を使って生成。

比較したSQLは以下の通り。
[1]
SELECT NAME
FROM TBL_WORK1
WHERE POINT != 50;


[2]
SELECT NAME
FROM TBL_WORK1
WHERE POINT < 50 OR POINT > 50;

それぞれの実行計画と統計情報は以下の通り。
[1] 99807件選択されました(906 msec.)
------------------------ 実行計画 --------------------------
SELECT STATEMENT   Cost =
    TABLE ACCESS FULL TBL_WORK1

------------------------ 統計情報 --------------------------
recursive calls                                   0
db block gets                                     0
consistent gets                                 548
physical reads                                    0
redo size                                         0
bytes sent via SQL*Net to client            1517840
bytes received via SQL*Net from client         3106
SQL*Net roundtrips to/from client               252
sorts (memory)                                    0
sorts (disk)                                      0
rows processed                                99807

[2]99807件選択されました(672 msec.)
------------------------ 実行計画 --------------------------
SELECT STATEMENT   Cost =
    CONCATENATION  
        TABLE ACCESS BY INDEX ROWID TBL_WORK1
            INDEX RANGE SCAN IDX_TBL_WORK1_01
        TABLE ACCESS BY INDEX ROWID TBL_WORK1
            INDEX RANGE SCAN IDX_TBL_WORK1_01

------------------------ 統計情報 --------------------------
recursive calls                                   0
db block gets                                     0
consistent gets                               16712
physical reads                                    0
redo size                                         0
bytes sent via SQL*Net to client            1517840
bytes received via SQL*Net from client         3143
SQL*Net roundtrips to/from client               252
sorts (memory)                                    0
sorts (disk)                                      0
rows processed                                99807

まぁ統計情報使ってるので、実行時間は当てになりませんが・・・。
実行計画を見ると、1は全スキャンしてるのに対して、2は範囲スキャンをかけていますね。

新しいサイトもよろしくお願いします!