sql:查询时快时慢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql:查询时快时慢?相关的知识,希望对你有一定的参考价值。
select top 20 * from [vw_wistable10_resident] where 1=1
and ( substring(wisfield101,1,1) in ('s') and substring(wisfield101,2,1)
in ('s') ) and wisfieldsbdw like '430204005%'
就是上面这条语句,我发现我每减少一个条件去执行速度就会变慢.我直接这样查询马上就能出来,当我什么条件都不带时竟要11秒.而表里面其实一个数据都没有.只是一个建了很多字段的空表.希望哪位大虾能告诉我是什么原因.谢谢!
楼下的好像没理解我的意思,我这个是有条件执行快,没有条件时执行反而慢些.
还有,你的这种写法可能也造成执行慢,SQL在执行时有这样一个规则,不知道你是否了解,在执行时,SQL 后台会先执行编译,找到一条最佳查询路径,也就是最快的查询路径,再真正执行查询;这个编译是需要时间的,如果条件复杂,或者由其它的变化而来的条件,会存在编译的查找最佳路径的时间问题;
数据库的字段越多,会有可能越慢,不管是否是空表,至于什么原因,好像MICROSOFT没有说法。
另外1=1这种恒等条件最好也不要加。 参考技术A 很正常啊,加了限制条件的sql语句在搜索时,sqlserver会自动根据限制条件把符合限制条件的记录组成个临时表,然后再根据后面的条件在这个临时表里查询,这样速度肯定会快.
而且,like方法会引起全表扫描,而且无法使用索引,最好少用.
查询请限制输出,才能优化sql语句. 参考技术B 你把1=1这个条件去掉试试 参考技术C 因为加了条件后所选择出来的数据会少很多
以上是关于sql:查询时快时慢?的主要内容,如果未能解决你的问题,请参考以下文章