本人是菜鸟。数据库为 mysql,数据量为三千万,以下语句执行一次要三个小时,实在是。。。 其中`t`为文章标题,`c`为长文章。以下字段做了索引:vcount 、ccount 、time 、t 请教高人们如何优化? sql 如下: SELECT `t`, `c`, `username`, `userid`, `time`, `ccount`, `vcount`, `u` FROM `p` where `pl`>=300 AND `ccount`>=4 AND time>'2021-01-01 00:00:00' AND (t LIKE '%合作%' or t LIKE '%启发%' or c LIKE '%合作%' or c LIKE '%启发%') ORDER BY publish_time DESC
首先我看语句是要找到符合那几个条件并且标题里面包含 这几个词语的文章对吗? 最好的方法是导入到 es 去搜索,但是我想这对你有点复杂,你可以换个方案,先执行 SELECT `t`, `c`, `username`, `userid`, `time`, `ccount`, `vcount`, `u` FROM `p` where `pl`>=300 AND `ccount`>=4 AND time>'2021-01-01 00:00:00' 这个条件,找到符合条件的文章,然后在代码中通过你们后端代码的字符串匹配功能去从 t 字段里面匹配这几个词语, 这个速度绝对比你用 sql 语句来匹配要快得多,然后 order by publish_time 也可以通过代码去排序