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

时间:2021-11-30 19:40:50
原帖http://bbs.csdn.net/topics/391003530在高性能数据库专区,放了两天没人能解。
回答出来者,此贴加上原帖分数全部送上。

注:请移步至原帖回复,谢谢。

7 个解决方案

#1


首先,关系型数据库对于sql中的%%无法利用索引进行检索,这是事实。

这个需求,不才用全文检索的话,就应该采用luence、solr这种专门的搜索引擎开源工具才能实现,或者你采用mongodb来存储这样也比关系型数据库效率高的。

#2


引用 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'吗
谢谢!

#3


引用 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'吗
谢谢!


luence以及solr能实现你的要求的。

#4


引用 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'吗
谢谢!


luence以及solr能实现你的要求的。


大哥,我自己发现了一个方法,可以解决这个问题
使用覆盖索引
具体方法见
http://blog.csdn.net/hzy38324/article/details/44857721
不管怎样,还是谢谢你的启迪!分给你啦!

#5


好吧,这个帖子最后是被我自己解决了。
方法是覆盖索引
具体方法见
http://blog.csdn.net/hzy38324/article/details/44857721

#6


引用 5 楼 hzy38324 的回复:
好吧,这个帖子最后是被我自己解决了。
方法是覆盖索引
具体方法见
http://blog.csdn.net/hzy38324/article/details/44857721


自己解决了就好啊。

#7


你给的解决你的问题的blog地址打不开,报错如下
http://bbs.csdn.net/topics/391004375?page=1
没找到该页面,如果有问题请与管理员联系 Email:blog@csdn.net

#1


首先,关系型数据库对于sql中的%%无法利用索引进行检索,这是事实。

这个需求,不才用全文检索的话,就应该采用luence、solr这种专门的搜索引擎开源工具才能实现,或者你采用mongodb来存储这样也比关系型数据库效率高的。

#2


引用 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'吗
谢谢!

#3


引用 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'吗
谢谢!


luence以及solr能实现你的要求的。

#4


引用 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'吗
谢谢!


luence以及solr能实现你的要求的。


大哥,我自己发现了一个方法,可以解决这个问题
使用覆盖索引
具体方法见
http://blog.csdn.net/hzy38324/article/details/44857721
不管怎样,还是谢谢你的启迪!分给你啦!

#5


好吧,这个帖子最后是被我自己解决了。
方法是覆盖索引
具体方法见
http://blog.csdn.net/hzy38324/article/details/44857721

#6


引用 5 楼 hzy38324 的回复:
好吧,这个帖子最后是被我自己解决了。
方法是覆盖索引
具体方法见
http://blog.csdn.net/hzy38324/article/details/44857721


自己解决了就好啊。

#7


你给的解决你的问题的blog地址打不开,报错如下
http://bbs.csdn.net/topics/391004375?page=1
没找到该页面,如果有问题请与管理员联系 Email:blog@csdn.net