1
StarkWhite 80 天前
看起来就是两个字段任何一个包含搜索关键词的条件,
为什么要 CONCAT(title, content) ? 而不是分开两个字段走正则? SELECT * FROM sys.Comment WHERE title REGEXP 'PORTS|PUMA|Michael.{0,3}Kors' OR content REGEXP 'PORTS|PUMA|Michael.{0,3}Kors' 可以改成 UNION SELECT * FROM sys.Comment WHERE title REGEXP 'PORTS|PUMA|Michael.{0,3}Kors' UNION SELECT * FROM sys.Comment WHERE content REGEXP 'PORTS|PUMA|Michael.{0,3}Kors' 都分别用几个常用关键词试试,哪个快用哪个,EXPLAIN 对比你的和我发的第一条,结果都一样, 第二条多了两步,但还是不好判断 |
2
StarkWhite 80 天前
@StarkWhite 还可以把正则换成 LIKE 试试
|
![]() |
3
deepall 80 天前
@StarkWhite 为什么不使用 LIKE,
使用 LIKE,类似与 LIKE '%PORTS%' OR LIKE '%PUMA%',LIKE 以 % 开头的条件并不使用索引,因此在 cpu 的使用上不会有太大的变化 |
![]() |
4
gz911122 80 天前
建议优化 es 版本....
|
5
bbao 80 天前
这种需求,我会同步一份数据到 ES 里,从 ES 里面做关键字匹配,不会在 DB 里做。
|
![]() |
6
jetyang 80 天前
DB 做这种检索效率极低,用 ES 才是正道
|
8
arrow8899 79 天前
这不是 mysql 的强项啊,es 查询不准确可以换分词器,或者导入自定义的词典。
|