SQL语句 优化问题,提高性能

来源:百度知道 编辑:UC知道 时间:2024/05/29 07:22:39
公司的数据库表有几十条数据,当查找一个没有的数据,比如like %关键词%,而数据库里面没有这个数据,这个时候很慢,数据库应该是整个表遍历一遍才发现没有结果的吧?这种情况如何解决
数据数是几十万,上面打错了,我还是说详细点,我是用top 10 来拿出数据的,这样查询的速度快很多,因为数据库只要找到了10条匹配的数据就停下来了,不过当查找的条件数据库没有符合的,那数据库就是要整个遍历,那样就会很慢,不知道有没有什么算法或者办法可以搞定,帮我搞定的我加悬赏

唉。。。说的千奇百怪什么都有,真是。。。。

下面,说说我的看法:
首先,like '%asdasd%'会造成表扫描。
其次,like 'asdasd%'可能无法满足楼主的要求
再次,like 并不是只有查不到的时候才遍历全表,是每次都要遍历。

给楼主两个建议方案,第一就是给 关键字 字段建索引
例如 select * from table1 where id like '%qweqwe%'
此时如果id有索引,或者是主键,那么就应该不会构成表扫描。但是有时候也有例外,有时候一样的脚本,换换格式,效率也就不一样,相信是优化器的作用。

第二方案,查询没有数据的时候慢,那么楼主试试不要查出每条数据,用count(*)先查一下试试,如果结果为0,就不用查了。
不过不是很建议用第二方案,除非迫不得已。

还有,楼主可以用查询分析器分析一下脚本的效率,看看什么地方构成表扫描,改善一下即可

除非你like的那个字段很长……不然几十条会慢?
尽量少用like。
这么少数据加索引没用,有时只会更慢。
应该是语句问题。。。。或锁表。
可把语句贴出来看看

超过万条的数据,如果字段在20个以上你加索引效果非常明显
跟你like不like没关系,你要查某个查询你不用like你怎么查

路过,查了查资料上说:经过实践验证,charindex()并不比前面加%的like更能提高查询效率,并且charindex()会使索引失去作用(指sqlserver数据库)

用这个函数charindex()绝对效率

1、关键字加索引
2、不用like