jfianl框架模糊查询表,表记录3万多条,耗时近10分钟

jfianl框架模糊查询表,表记录3万多条,耗时近10分钟  怎么解决   这是查询语句

select count(*)  FROM   shop_perm_log l,shop_member m WHERE  l.mid=m.id  and m.nickname like '%设置%' or l.op like'%设置%' LIMIT 0,10


评论区

flash866

2018-04-08 13:48

用全文索引试试吧,这个不是jfinal能解决的问题

JFinal

2018-04-08 14:23

这个 sql 造成了全表多次扫描,将 where 部分的两个 like 加上扩号:
WHERE l.mid=m.id and (m.nickname like '%设置%' or l.op like'%设置%') LIMIT 0,10

注意看上面的那对小扩号,这个是 sql 基础问题,sql 本身如果有性能问题肯定不在 jfinal 所能控制的范围内

你可以将这个 sql 直接在 mysql 控制台执行,照样耗时 10 分钟

yjjdick1990

2018-04-08 16:18

模糊查询肯定会让索引失效啊,你索引命中知道什么什么概念吗

yjjdick1990

2018-04-08 16:18

如果要搜索快就直接去用es做搜索服务器

JFinal

2018-04-08 16:58

@yjjdick1990 这个不仅是索引失效的问题这么简单,3 万条数据索引失败也不至于这么慢,这里慢就慢在 OR 条件引发的 30000 X 30000 的 30000 次全表扫描

clfjava

2018-04-08 18:20

@yjjdick1990 ES搜索服务器是什么?

或是的话

2018-04-09 11:26

还是用 搜索引擎吧 solr

热门反馈

扫码入社