[120分 原帖+此帖]mysql怎么高效率地检索某段字符,like和全文检索都不行

SexyCode
博客专家认证
2015-03-26 09:58:56
原帖http://bbs.csdn.net/topics/391003530在高性能数据库专区,放了两天没人能解。
回答出来者,此贴加上原帖分数全部送上。

注:请移步至原帖回复,谢谢。
...全文
259 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SexyCode 2015-04-06
  • 打赏
  • 举报
回复
好吧,这个帖子最后是被我自己解决了。 方法是覆盖索引 具体方法见 http://blog.csdn.net/hzy38324/article/details/44857721
SexyCode 2015-04-06
  • 打赏
  • 举报
回复
引用 3 楼 mchdba 的回复:
[quote=引用 2 楼 hzy38324 的回复:] [quote=引用 1 楼 mchdba 的回复:] 首先,关系型数据库对于sql中的%%无法利用索引进行检索,这是事实。 这个需求,不才用全文检索的话,就应该采用luence、solr这种专门的搜索引擎开源工具才能实现,或者你采用mongodb来存储这样也比关系型数据库效率高的。
非常感谢。这是我到目前为止收到的最好的回复! 有两个问题 1.全文索引可行吗 全文索引是索引单词的,我这里的字段是一连串字符连在一起,中间没有逗号,如题目中所说的'US2009484321A'、'US2009485222A','US2003617086A',如果采用全文索引 select * from tablewhere match(chaxunhao) against(‘2009’);去查,返回结果会是空。 2.您说的luence或者solr搜索引擎可以解决以上问题吗 luence或者solr搜索引擎,假如我查找‘2009’,他们能够在快速在二十多万的'US2009484321A'、'US2009485222A','US2003617086A'之类的数据中,查找到'US2009485222A'吗 谢谢![/quote] luence以及solr能实现你的要求的。[/quote] 大哥,我自己发现了一个方法,可以解决这个问题 使用覆盖索引 具体方法见 http://blog.csdn.net/hzy38324/article/details/44857721 不管怎样,还是谢谢你的启迪!分给你啦!
九月茅桃 2015-04-06
  • 打赏
  • 举报
回复
你给的解决你的问题的blog地址打不开,报错如下 http://bbs.csdn.net/topics/391004375?page=1 没找到该页面,如果有问题请与管理员联系 Email:blog@csdn.net
九月茅桃 2015-04-06
  • 打赏
  • 举报
回复
引用 5 楼 hzy38324 的回复:
好吧,这个帖子最后是被我自己解决了。 方法是覆盖索引 具体方法见 http://blog.csdn.net/hzy38324/article/details/44857721
自己解决了就好啊。
九月茅桃 2015-03-26
  • 打赏
  • 举报
回复
首先,关系型数据库对于sql中的%%无法利用索引进行检索,这是事实。 这个需求,不才用全文检索的话,就应该采用luence、solr这种专门的搜索引擎开源工具才能实现,或者你采用mongodb来存储这样也比关系型数据库效率高的。
九月茅桃 2015-03-26
  • 打赏
  • 举报
回复
引用 2 楼 hzy38324 的回复:
[quote=引用 1 楼 mchdba 的回复:] 首先,关系型数据库对于sql中的%%无法利用索引进行检索,这是事实。 这个需求,不才用全文检索的话,就应该采用luence、solr这种专门的搜索引擎开源工具才能实现,或者你采用mongodb来存储这样也比关系型数据库效率高的。
非常感谢。这是我到目前为止收到的最好的回复! 有两个问题 1.全文索引可行吗 全文索引是索引单词的,我这里的字段是一连串字符连在一起,中间没有逗号,如题目中所说的'US2009484321A'、'US2009485222A','US2003617086A',如果采用全文索引 select * from tablewhere match(chaxunhao) against(‘2009’);去查,返回结果会是空。 2.您说的luence或者solr搜索引擎可以解决以上问题吗 luence或者solr搜索引擎,假如我查找‘2009’,他们能够在快速在二十多万的'US2009484321A'、'US2009485222A','US2003617086A'之类的数据中,查找到'US2009485222A'吗 谢谢![/quote] luence以及solr能实现你的要求的。
SexyCode 2015-03-26
  • 打赏
  • 举报
回复
引用 1 楼 mchdba 的回复:
首先,关系型数据库对于sql中的%%无法利用索引进行检索,这是事实。 这个需求,不才用全文检索的话,就应该采用luence、solr这种专门的搜索引擎开源工具才能实现,或者你采用mongodb来存储这样也比关系型数据库效率高的。
非常感谢。这是我到目前为止收到的最好的回复! 有两个问题 1.全文索引可行吗 全文索引是索引单词的,我这里的字段是一连串字符连在一起,中间没有逗号,如题目中所说的'US2009484321A'、'US2009485222A','US2003617086A',如果采用全文索引 select * from tablewhere match(chaxunhao) against(‘2009’);去查,返回结果会是空。 2.您说的luence或者solr搜索引擎可以解决以上问题吗 luence或者solr搜索引擎,假如我查找‘2009’,他们能够在快速在二十多万的'US2009484321A'、'US2009485222A','US2003617086A'之类的数据中,查找到'US2009485222A'吗 谢谢!

56,675

社区成员

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

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