php - mysql查询方式疑问
PHPz
PHPz 2017-05-31 10:34:41
0
1
591

现有数据表T里面的字段“A”,A的值通常为:“12,123,312,1212” 形式。T中已有数据10W条。

需要查询出A中含有单独"12"的记录~

比如:
"123,125,1212,1234,312" 不含有单独的一个"12" 不要
"1,18,123,1212,321,312" 不含有单独的一个"12" 不要
"1,12,123,1212,321,312" 含有单独的一个"12" 要
...

我有2种查询方法,感觉有点繁琐~ 一个是CONCAT,一个是LIKE OR

问问大家有没有更高效的方法,拜谢~

PHPz
PHPz

学习是最好的投资!

全部回复(1)
仅有的幸福

可以考虑给字段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.cnf配置:
innodb_ft_min_token_size=2
ft_min_word_len=2

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!