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