技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 数据库 > mysql > 正文

mysql 模糊查询 百万条就不行了?

来源: 技术CTO 阅读:

例子现在有两百多万条的用户,一堆搜索条件,member存储账户信息,member_person存储用户信息
要求模糊查询,两秒以内,like完全太慢,函数locate快些,但是也达不到要求

SELECT
m.*, mp.mid,
mp.zhiwu,
mp.xueke,
mp.danwei,
mp.uname,
mp.mobile,
mp.place,
mp.city,
mp.county
FROM
`cms_member` AS m
LEFT JOIN `cms_member_person` AS mp ON m.mid = mp.mid
WHERE
  -- locate('2012', m.userid) > 0
    -- MATCH (m.userid) AGAINST ('好好分数');
m.userid in ('小')
ORDER BY
m.logintime DESC

求解决两秒以内
可把执行计划贴出来,供大家参考
引用 1 楼 u010587433 的回复:
可把执行计划贴出来,供大家参考
已发
只有全文索引了。楼主不是已经全长 match 了吗? 有没有创建全文索引?
引用 4 楼 ACMAIN_CHM 的回复:
只有全文索引了。楼主不是已经全长 match 了吗? 有没有创建全文索引?


说一下现在的情况
1、有solr服务器也实现了这个检索但是有一个小时的延迟
2、就是把like换成正则或者是自定义函数
3、就是全文索引,测试的时候建了全文索引,但是好多东西搜不出来,因为人家搜的是用户名,太不精准了

其实有一个解决方案就好,实时检索,精准点,速度快
solr可以用代码触发同步,插入或删除数据的时候同步到solr就不会有延迟。不过我们没有试过高并发的情况反复触发同步会怎样。

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^