mysql:489
From: Tamon Nomura <Tamon Nomura <tamon@xxxxxxxxxx>>
Date: Mon, 04 Jan 1999 10:35:31 +0900
Subject: [mysql 489] Re: あけましておめでとうございます。
あけましておめでとうございます。 tamonです。 > JOIN を使って SELECT したら、 table2 のキーになるデータに > Index を付けなかった場合で 8 分 30 秒。Index を振った場合、 > 21 秒。なんともびっくりです。ちなみに、table1 には 600 件。 昔、お仕事でCDの受注出荷のシステムをやっていたんですが、毎日の バッチ処理で夜中に始めて、朝の始業に間に合わないことがあって(^^;、 そこのシステム部の部長さんに「コンピュータなんだから一瞬で終わる だろ!」と怒鳴られた記憶が有ります。 結局はIndexの作成やSQLの最適化でかなり早くなったんですが、あの 一言は、私に「すぐに終わらないSQLはIndexがないかJOINに失敗して いる」と教えてくれました。 #ソムリエみたい(笑) ORACLEのオプティマイザがどの順番でIndexを使い始めるか忘れたんですが (最近はそんなこと関係ないかも)whereで引っかける項目の順番でIndexを 作れば、ORACLEでもMySQLでも幸せかもしれないです。 ORACLEはあの分厚いマニュアルでオプティマイザの動きを解説してたんです が、MySQLは解説がないんでオプティマイザの動きは分かりません。 マニュアルのIndexの説明では、左から順番にIndexと合致したWhereでのみ Indexを使うみたいです。 最悪、SQL毎にIndexを作らなければならなくなるので、Indexを意識した SQLを書く心がけが必要ですね。 ちなみにORACLEのオプティマイザは頭がいいので(その分MySQLより遅いかも) あまり順番を意識しなくても最適化してくれます。
482 1999-01-01 23:22 [<endo@xxxxxxxxxx> ] あけましておめでとうございます。 484 1999-01-02 01:51 ┣[<tommy@xxxxxxxxxx> ] 485 1999-01-02 07:49 ┃┣[<endo@xxxxxxxxxx> ] 494 1999-01-06 18:13 ┃┗[<yandy@xxxxxxxxxx> ] -> 489 1999-01-04 10:35 ┗[Tamon Nomura <tamon@] 490 1999-01-04 11:31 ┗[民斗 <tommy@xxxxxxxx] where 節での最適化 (Re: あけましておめでとうございます。 ) 499 1999-01-06 21:16 ┗[Tamon Nomura <tamon@] 500 1999-01-07 09:30 ┗[<endo@xxxxxxxxxx> ] 501 1999-01-07 09:44 ┗[Hideaki Nakayama <na] 503 1999-01-07 09:56 ┗[<endo@xxxxxxxxxx> ] 505 1999-01-07 10:03 ┗[Hideaki Nakayama <na]