人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLを書く上でのパフォーマンスについて。

SQLのwhere句の順序によってパフォーマンスが違うようなことを聞いたことがあるような気がするのですが、どうなのでしょうか?

どんな順序に条件を入れるのがいいのか、指針となるような考え方?を教えてください。

インデックスがあるものからの方がいいとか、Likeは後に持っていった方がいいとか、joinするのは先がいいとかあったら教えてください。

●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:SQL インデックス パフォーマンス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●40ポイント

そういうパフォーマンスチューニングはDBのオプティマイザの実装に寄って大きく変わるので、DBの種類を指定しないとまったく別の結論になりかねません。


Oracle の場合、FROM 句に指定する順番によってパフォーマンスに大きく差が出る可能性があります。

@IT:Oracle SQLチューニング講座(10) Page 1/4


WHERE 句の順番については大抵の場合オプティマイザが自動的に入れ替えてしまうので、比較的大きな差はでにくいと思います。

mysql:499

◎質問者からの返答

そういえば、Oracleを使っている時にその話を聞きました。

自動的に入れ替えるのは知りませんでした。

ありがとうございます。


2 ● llusall
●40ポイント

こちらいかがでしょうか?


Yahoo知恵袋 SQLのwhere条件の順序で、速度って変わるのでしょうか?

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=...


RDBMSを信じない人々?オプティマイザ

http://www2.t-next.com/home/kadoya/devlife/devlife05.html

※抜粋

まともなRDBMSにはオプティマイザが実装されています。オプティマイザというのは、我々が書いたSQLを解析して、求められているデータを最も少ない資源で、素早く抽出するには、どのような手段が適しているかを導き出す(SQL文の最適化を行う)機能のことです。最近のオプティマイザは賢いので、少々妙なSQLを書いてもそれなりの速度で結果を返してくれます。また未だにSELECT句に記述するフィールドの順番によって、応答時間が異なると信じている人がたまにいますが、オプティマイザが発達した今では無関係です


-----------------------------------------------------------------------------------------

※お使いのDBの種類やバージョンにより、コストベース、ルールベースの違いがあるでしょうから、

実際に実行計画を比較するなどして確認してみるのが一番かと思います。


その他、チューニングに関して、私の参考としているページを紹介します。

■SQLを速くするぞ

http://www.geocities.jp/mickindex/database/db_optimize.html

■忘れっぽいエンジニアのオラクルSQLリファレンス

http://oracle.se-free.com/tuning/tuning.html

■MIZOBUCHI'S HOME PAGE Oracle DBMS入門

http://www.t3.rim.or.jp/~buchi/rdb.html

◎質問者からの返答

ありがとうございます。

とてもためになりそうなサイトも教えていただきまして大変感謝します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ