求助关于SQL like查询语句时间长的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助关于SQL like查询语句时间长的问题相关的知识,希望对你有一定的参考价值。

最近服务器很慢,sqlserver.exe使用率经常长时间达到100%,跟踪了下原来是Select Top 5 TF_Id,TF_Class,TF_Title,TF_Note,TF_User,TF_Now from TabelFo where TF_Title like '%关键字%' or TF_Note like '%关键字%' Order by Id Desc这个论坛语句出题,执行时间平均在5秒以上,分析了下,可能是因为TF_Note是文本字段的缘故,内容长检索量大,请教各位有没什么办法解决这个问题呢?当然别告诉我不要检索TF_Note这个字段哦,我需要的是必须要检索这个字段的方法咯~或者是什么变通的方法!
做索引最多只能用TF_Title吧,文本列TF_Note不能做为索引键列吧,但是现在开销最大的是TF_Note的查询。

我下午尝试了建立全文索引,效果很明显

我觉得你可以不必做在数据库上面,因为这样以后数据增大后,肯定还是额瓶颈问题的,我以前做的全文检索为了避免这个问题就是使用了一个Lucene的搜索引擎来对文本进行索引,在进行上面的字段查询时,不必对Note字段进行查询了,只要对索引进行检索就可以,当然索引要关联你的TabelFo的主键,这样最后一个条件就可以换成TF_Id in()的格式。 参考技术A 你看!还得动索引吧。建立个全文索引还是对头地。呵呵……一般基本上就是动索引。无其他方法了。

建议改变数据类型然后建立索引。没有索引你想LIKE上是很耗时的。别说LIKE上。=上数据多了效率都难以接受。
参考技术B 参考
http://hi.baidu.com/luanhui2007/blog/item/bdcd90f87feb1c52242df2f5.html
例子:
http://edu.codepub.com/2009/0810/12919.php

参考资料:http://hi.baidu.com/luanhui2007/blog/item/bdcd90f87feb1c52242df2f5.html

本回答被提问者采纳

求助oracle like%.%模糊查询优化

参考技术A 这种一般从业务逻辑上面优化比较好,比如把字段切割开开存,把模糊匹配变成精确匹配。 参考技术B 将%.%改为用instr函数实现。 参考技术C 建立查询字段的索引

以上是关于求助关于SQL like查询语句时间长的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于SQL查询语句中的LIKE模糊查询的解释

mssql中一个简单的模糊查询语句怎么写请教大侠们

关于sql查询中的like用法疑问?

sql查询语句如何能让cpu一下跑满

SQL的有关于参数的模糊查询

关于sql语句模糊查询