柱內

2014-02-17 32 views
0

我需要尋找一列的字符串,對相同字符串的變化多次搜索與MySQL LIKE miltiple倍,所以我這樣做柱內

SELECT * 
FROM `users` 
WHERE user = 'king' 
OR alias = 'king' 
OR aliases LIKE '%,king%' 
OR aliases LIKE '%king,%' 
OR aliases LIKE '%king,%' 

aliases將包含逗號分隔的單詞例如king,queen,knight等 但是因爲像本身很慢,我想知道是否有什麼辦法可以優化這個查詢

+0

如果您想知道爲什麼這個查詢速度很慢,那麼將多個事物放在一個列中的設計決定就會讓您咬牙切齒。不幸的是,非規範化就是這樣。 – dasblinkenlight

+0

創建別名 – Jake1164

+0

的關係表如果必須將別名放在另一個表中,那麼我將不得不執行兩個查詢或更多 – Smith

回答

1

試試這個:

SELECT * 
FROM `users` 
WHERE user = 'king' 
OR alias = 'king' 
OR FIND_IN_SET ('king', aliases)>0; 
+0

這比'like'快# – Smith

+0

應該是....測試你自己:) – CodeBird