42

varchar 列にインデックスを付けると、クエリの実行が遅くなりますか? それをintにすることができます。LIKE % 比較を行う必要はありません。

4

4 に答える 4

85

varchar 列にインデックスを付けると、クエリの実行が遅くなりますか?

いいえ、違います。
オプティマイザーがインデックスの使用を決定した場合、クエリはより高速に実行されます。 INSERTそのテーブルのs/ UPDATEs/ DELETEs は遅くなりますが、気付くほどではありません。

LIKE % 比較を行う必要はありません

以下を使用することに注意してください。

LIKE '%whatever%'

...インデックスは使用しませんが、次のようになります。

LIKE 'whatever%'

キーは文字列の左側をワイルドカード化しており、列のインデックスを使用できないことを意味します。

また、MySQL はインデックス用に確保するスペースの量を制限していることにも注意してください。MyISAM テーブルでは最大 1000 バイト (InnoDB では 767 バイト) の長さにすることができます。

于 2009-12-14T01:39:17.183 に答える
11

varchar 列を整数に置き換えることができる場合 (これはあなたのヒントだと思います)、整数列を含むインデックスは、いくつかの理由で varchar 列よりも優れたパフォーマンスを発揮します。

  1. インデックス サイズが小さくなり、ページングが少なくなります。
  2. 整数の比較は、varchar よりもはるかに優れています。
于 2009-12-14T01:43:41.177 に答える
7

インデックスを作成してもクエリが遅くなることはありません。データベースのサイズが大きくなるだけなので、試してみてください。

行のフェッチでパフォーマンスを向上させることができるはずですが、それはデータやクエリに依存します。

于 2009-12-14T01:09:32.820 に答える
2

インデックス作成によってクエリが遅くなることはありません。列を int 型にできる場合は、そうすることをお勧めします。ほとんどの RDBMS は varchar よりも int 型を高速に検索できるためです。

于 2009-12-14T01:13:09.927 に答える