現有資料表T裡面的欄位“A”,A的值通常為:“12,123,312,1212” 形式。 T中已有數據10W條。
要查詢出A含有單獨"12"的記錄~
例如:
"123,125,1212,1234,312" 不含單獨的一個"12" 不要含有單獨的一個"12" 不要
"1,12,123,1212,321,312" 含有單獨的一個"12" 要
...
問問大家有沒有更有效率的方法,拜謝~
仅有的幸福2017-05-31 10:36:41
可以考慮為欄位A新增全文索引,使用進行全文檢索:
ALTER TABLE `T` ADD FULLTEXT (`A`);
SELECT `id` FROM `T`
WHERE MATCH(`A`) AGAINST('12' IN BOOLEAN MODE)
ORDER BY `id` DESC LIMIT 10 OFFSET 0;
要注意的是:
MySQL5.6.4的innodb_ft_min_token_size 的預設值為3.
MyISAM的ft_min_word_len 的預設值為4.
如果你要索引的最小長度是2,那就要在my.. =2
ft_min_word_len=2