2009-08-23 13 views
1

私はこのように見ているテーブルを持っている:列にインデックスを追加するかどうかを指定しますか?

CREATE TABLE `item` (
`id` int(11) NOT NULL auto_increment, 
`title` varchar(255), 
`my_number` int(10) unsigned default NULL 
); 

は、アイテムの数十万人があり、そして私は通常「my_number」でそれらを注文します。

'my_number'にインデックスを追加すると、このフィールドで注文するとクエリのパフォーマンスが向上しますか?

私はMySQLを使用しています。テーブルはInnoDBです。

答えて

6

私は答えを知っていますが、それは問題ではありません。 で行うべきことすべて潜在的なデータベースの最適化の場合は、インデックスとテストそれを追加することです。そして、それはあなたの影響を受けたクエリ、挿入、更新をすべてテストして、パフォーマンスの低下を他の場所よりも上回ることを保証することを意味します。

あなたが自分で収集できる具体的なデータであれば、自分の知識や他の人のことを信用するべきではありません。 測定、推測しないでください!

答えは、「あなたのDBMSが本当に脳死でない限り、そうするべきです。一般に、インデックスを追加すると選択のスピードは上がりますが、挿入と更新は遅くなります。しかし、私はを意味します。 "一般的に" - 必ずしもそうではありません。優れたDBAは、DBMSのパフォーマンスを継続的に調べ、必要に応じてチューニングします。データベースは、設定と忘れのないオブジェクトではありませんので、気をつけて育てる必要があります:-)

+0

よくテストして、インデックスを追加するとパフォーマンスが大幅に向上しました。 これは、テストとインデックス作成の両方に適しています:-) – Hobhouse

関連する問題