3

mysqlバージョン:5.1.61-community-logでInnoDBエンジンを使用しています。検索するテキストの長さは100文字未満です。LIKE'%searchstring%'を使用したクエリのパフォーマンスは、テキストのインデックス作成によって向上しますか?

編集:
私はjquery自動提案コンポーネントにこのクエリを使用しています。
サードパーティのウェブホスティングサービスを使用しています。だからアップグレードは私にとってオプションではありません

4

1 に答える 1

4

いいえ、インデックスを追加してもLIKE '%foo%'クエリは役に立ちません(多くの場合*)。LIKE条件は、次のような定数プレフィックスがある場合にのみインデックスを効率的に使用できます。LIKE 'foo%'

代わりに全文検索を検討する必要があります。MySQL 5.5以前を使用している場合は、MyISAMエンジンのみがサポートされていました。MySQL 5.6以降では、全文検索でInnoDBもサポートされています。

古いバージョンのMySQLを使用していて、アップグレードできず、ストレージエンジンを変更できない場合(外部キー制約などのInnoDBの他の機能が必要なため)、のみを格納する新しいMyISAMテーブルの作成を検討できます。主キーとテキスト列。他の列にもアクセスする必要がある場合は、このテーブルを使用して高速全文検索を実行し、元のテーブルに結合できます。

次のような外部テキスト検索エンジンの使用を検討することもできます。

(*)追加するインデックスがクエリのカバーインデックスである場合、インデックスを追加することでわずかな改善が得られます。インデックスの幅が狭いため、インデックスのフルスキャンはテーブル全体のフルスキャンよりも高速になります。

于 2012-06-09T06:34:44.410 に答える