2011-12-19 17 views
0

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

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で渡される変数です。

答えて

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 

は、MySQLで前5.6に、FULLTEXTインデックスのみMyISAMストレージエンジンでサポートされていることをhttp://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

注を参照してください。

関連する問題