Like節を使用したMySQLのマルチフィールド検索

私は、MySQLのLike節を使って複数のフィールドを検索しようとしています。結果を返すことができません。私が使用しているクエリは次のとおりです。

SELECT player_id, 1st_name, last_name, birth_date, nationality, pasition 
FROM `people` 
WHERE player_id  LIKE '%Keyword%' 
  OR 1st_name    LIKE '%Keyword%' 
  OR last_name   LIKE '%Keyword%' 
  OR birth_date  LIKE '%Keyword%' 
  OR nationality LIKE '%Keyword%'
  OR pasition    LIKE '%Keyword%' 
ORDER BY `people`.`1st_name` ASC LIMIT 0 , 60

キーワードはPHPによって渡される変数です。

0

1 答え

これにはFULLTEXT索引を使用する必要があります。複数の列を検索することができ、LIKEでワイルドカードを使用する場合よりも数百倍または数千倍も高速に実行されます。

CREATE FULLTEXT INDEX ft_people ON `people` 
  (player_id, `1st_name`, last_name, birth_date, nationality, position);

SELECT player_id, 1st_name, last_name, birth_date, nationality, pasition 
FROM `people` 
WHERE MATCH(player_id, `1st_name`, last_name, birth_date, nationality, position) 
  AGAINST('+Keyword' IN BOOLEAN MODE) 
ORDER BY `people`.`1st_name` ASC LIMIT 0 , 60

http://dev.mysql.com/doc/refman/を参照してください。 5.5/ja/fulltext-search.html

5.6より前のMySQLでは、FULLTEXTインデックスはMyISAMストレージエンジンでのみサポートされていることに注意してください。

1
追加された