2017-05-30 1 views
0

こんにちは誰も私は最低10,000,000行でなければならない10列のテーブルを作成しようとしており、その中にはカラムdescription - VARCHAR(600)とインデックスがあります。InnoDB indexing varcharまたは複数のvarcharsをインデックス化する

そこで問題は、その列にLIKEを照会するために速くなり、ある - VARCHAR(600)、または100文字で6列に説明を分割し、LIKEORでそれらのインデックスを作成する方が速いだろう。..

例えば

description - VARCHAR(600) INDEX

SELECT `id` FROM `table` WHERE `description` LIKE "%something%" 

又はそれdesc1ように6列にdescriptionを分割するより速くなり、desc2、.. と- 彼らと使用の各クエリ次

SELECT `id` FROM `table` WHERE `desc1` LIKE "%something%" OR `desc1` LIKE "%something%" OR `desc3` LIKE "%something%" OR `desc4` LIKE "%something%" OR `desc5` LIKE "%something%" OR `desc6` LIKE "%something%" 

私はデータベースの作成を開始する前に思っ...みんなに

敬具と感謝!

+0

あなたが検索するために何をしたいですか?構造化されていないデータ? – inetphantom

答えて

3

全く違いはありません。 。 。まあ、ほとんど。 likeパターンはワイルドカード( "%")で始まるため、クエリは完全なテーブルスキャンを実行する必要があります。

パフォーマンスが気になる場合は、おそらくフルテキスト検索として言い換えるべきです。 documentationから始めてください。

+0

答えをありがとう、パフォーマンスについて気にしているので、全文検索を述べたときに別の質問があります。最大40文字(VARCHAR [40])の列でフルテキスト検索を使用する必要があります。 。 – Ultrazz008

+0

@ Ultrazz008。 。 。それはあなたが探しているものによって異なります。全文検索は、部分文字列ではなく列の* words *に焦点を当てています。 –

+0

これで、このオプションの方が良いです...しかし、上記の1つについては、全文索引を使用します。ありがとうございました! – Ultrazz008

0

あなたが

  • LIKE '%something%'(つまり、主要なワイルドカードとLIKEである)、単一の列を使用する必要がある場合。 (より少ない仕事6 LIKEs、プラスORs)また、somethingについては、2つのチャンクにまたがって何が起こるでしょうか?
  • は、その列にはインデックス(なぜなら大手ワイルドカードの、インデックスはないだろう使用)
関連する問題