搜尋

首頁  >  問答  >  主體

php - mysql查詢方式疑問

現有資料表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" 要
...

#我有2種查詢方法,感覺有點繁瑣~ 一個是CONCAT,一個是LIKE OR

問問大家有沒有更有效率的方法,拜謝~

PHPzPHPz2744 天前644

全部回覆(1)我來回復

  • 仅有的幸福

    仅有的幸福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

    回覆
    0
  • 取消回覆