ユーザ用ツール

サイト用ツール


sql早くさせる方法

SQL早くさせる方法

1.WHEREの左辺で算術演算子や関数を使わない

SELECT NAME FROM CUSTOMERS
WHERE SAL - TAX > 1000
SELECT NAME FROM CUSTOMERS
WHERE SAL > TAX + 1000

2.「後方一致」検索はなるべく避ける

インデックスが付加されているフィールドであっても,LIKE '%AAA' のような「後方一致」を指定すると,インデックスを検索せずにデータ部の全表走査が行われます。したがって「後方一致」の使用はなるべく避けるようにしましょう。どうしても必要であるなら,

・何らかの,少量まで絞り込める条件とAND条件で組み合わせる ・複数のフィールドに分割し,少しでも前方・完全一致できる範囲を広げる

といった方法を検討して下さい。

3.IS NULL,IS NOT NULLを単独で使わない

…WHERE A IS NULL

とする代わりに

…WHERE A IS NULL AND B = 10

4.SELECT文で「*」を使わない

5.DISTINCTの代りにEXISTSを使う

6.GROUP BY,ORDER BY,HAVINGは注意する

GROUP BY句,ORDER BY句,HAVING句は,余分なディスク入出力が発生したりディスク領域を使うので,自分もしくはほかのプログラムのパフォーマンスに悪影響を及ぼします。このことを念頭において,使わずに済むならなるべく使わないようにしましょう。

7.演算子の組み合わせで速度が変わる

8.テーブルの別名を利用する

SELECT ID, NAME FROM CUSTOMERS
WHERE SAL < 1000

よりも,

SELECT a.ID, a.NAME FROM CUSTOMERS a
WHERE SAL < 1000

のほうが高速になります。

9.SQL文の表現を統一する

RDBMSは実行計画をキャッシュに保存しておいて再利用します。ところが,SQL文に定数を直接記述してしまうと,RDBMSは定数値だけが異なるSQL文を別のものと解釈するため,再利用されません*B。バインド変数を使用して,できる限りSQL文を統一するようにします。また,文字の大小や記述の仕方なども統一しておかないと別のSQL文だと認識されてしまうので,気を付けてください。

10.SQL文を簡潔に記述する

SQL文はなるべく簡潔に記述するようにします。そうすることで,SQL文の処理時間を短縮することができます。

sql早くさせる方法.txt · 最終更新: 2013/12/03 11:11 by luis_lee