varchar 列にインデックスを付けると、クエリの実行が遅くなりますか? それをintにすることができます。LIKE % 比較を行う必要はありません。
4 に答える
varchar 列にインデックスを付けると、クエリの実行が遅くなりますか?
いいえ、違います。
オプティマイザーがインデックスの使用を決定した場合、クエリはより高速に実行されます。 INSERT
そのテーブルのs/ UPDATE
s/ DELETE
s は遅くなりますが、気付くほどではありません。
LIKE % 比較を行う必要はありません
以下を使用することに注意してください。
LIKE '%whatever%'
...インデックスは使用しませんが、次のようになります。
LIKE 'whatever%'
キーは文字列の左側をワイルドカード化しており、列のインデックスを使用できないことを意味します。
また、MySQL はインデックス用に確保するスペースの量を制限していることにも注意してください。MyISAM テーブルでは最大 1000 バイト (InnoDB では 767 バイト) の長さにすることができます。
varchar 列を整数に置き換えることができる場合 (これはあなたのヒントだと思います)、整数列を含むインデックスは、いくつかの理由で varchar 列よりも優れたパフォーマンスを発揮します。
- インデックス サイズが小さくなり、ページングが少なくなります。
- 整数の比較は、varchar よりもはるかに優れています。
インデックスを作成してもクエリが遅くなることはありません。データベースのサイズが大きくなるだけなので、試してみてください。
行のフェッチでパフォーマンスを向上させることができるはずですが、それはデータやクエリに依存します。
インデックス作成によってクエリが遅くなることはありません。列を int 型にできる場合は、そうすることをお勧めします。ほとんどの RDBMS は varchar よりも int 型を高速に検索できるためです。