日期:2014-05-19  浏览次数:20449 次

关于查询语句效率的差别问题
说明:   id列设置为聚集索引,name列无索引!

请问下面两句查询语句
select   *   from   cctable   where   id=1   and   name= 'ccc '  

select   *   from   cctable   where   name= 'ccc '   and   id=1

两句查询在执行效率上是否一样?

我的疑问是在查询语句条件部份id(此列为聚集索引)列放置在前与放置在后是否有区别?
谢谢!


------解决方案--------------------
一样的!
------解决方案--------------------
不一样的!
假设表中有1万条记录,ID=‘1’的有10条,name= 'ccc '的有100条,
前一个语句,从10000条中选出10条,然后从10条中选出满足name= 'ccc '的(最多也只有10条啊!);而后一语句,...同样的道理,你应该可以判断哪个效率高了吧!
------解决方案--------------------
一样的是没有区别的

你的语句进入MS SQL SERVER后,会有语句优化的,不会出现nervernerver说的那种情况的
------解决方案--------------------
呵呵,你测试的数据量有多少?

一般千万级别数据,差距在几十毫秒,可以忽略不记的:)

这个在很久以前就有定论地:)
------解决方案--------------------
这个问题就和讨论select count(*)快还是count(聚集索引)一样,其实有细小差别,但是查询分析器会自动进行优化,根本不用担心效率问题:)