100W的数据量用模糊查询速度优化

cloudmissing 2017-05-24 11:22:11
ERP系统中,【订单查询】中有100W的订单。
在使用 非索引字段,例如:收件人电话、客户备注、客服备注等 模糊查询时,速度很慢。
就一个简单的SQL : select 字段名 from 订单表 where tel like '%xxxxx%' ,耗时要几十秒。
请各位大神有什么好的优化方法吗。

PS: 公司之前有个系统,叫网店管家,同样100W的数据,同样的模糊查询(非索引字段), 它就很快。大概2-3秒左右就出来
...全文
921 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieyueqing 2017-05-27
  • 打赏
  • 举报
回复
like '%xxxxx%' 是用不了索引的,如果你又要求很精确(一条都不能少,也不能多)的话,全文索引什么的都不能用了。 唯一的办法是加条件,缩小搜索范围,比如加时间条件,搜索最近一周的。
吉普赛的歌 2017-05-25
  • 打赏
  • 举报
回复
模糊查询对所有数据库来说都是表扫描, 没办法优化。 你所说的快一点, 很可能是字段比较小, 或者硬件比较厉害。 建议你在程序端使用 lucene (.net 使用 lucene.net), 这个相当于用文件来管理,比数据库要快得多。
LongRui888 2017-05-25
  • 打赏
  • 举报
回复
你可以看看网站管家的代码,看看里面的sql是怎么写的。 不过我觉得,这种模糊查询,而且又是非索引字段,速度不会快到哪儿去,特别是在数据库相对大的情况下。
cloudmissing 2017-05-24
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
like '%xxxxx%' 没有好的办法优化, 可以参考一下全文索引。 可至MYSQL官方免费手册中参考如下信息说明。 12.9 Full-Text Search Functions 12.9.1 Natural Language Full-Text Searches 12.9.2 Boolean Full-Text Searches 12.9.3 Full-Text Searches with Query Expansion 12.9.4 Full-Text Stopwords 12.9.5 Full-Text Restrictions
用过全文索引 但全文索引实现不了模糊查询的效果 全文索引是按单词查询的。 例如 AB CD ;有空格间隔开,查询CD时,才能查到。 如果是ABCD;查询CD时,全文索引是查不出的
ACMAIN_CHM 2017-05-24
  • 打赏
  • 举报
回复
like '%xxxxx%' 没有好的办法优化, 可以参考一下全文索引。 可至MYSQL官方免费手册中参考如下信息说明。 12.9 Full-Text Search Functions 12.9.1 Natural Language Full-Text Searches 12.9.2 Boolean Full-Text Searches 12.9.3 Full-Text Searches with Query Expansion 12.9.4 Full-Text Stopwords 12.9.5 Full-Text Restrictions

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧