关于查询语句效率的差别问题
说明: 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(聚集索引)一样,其实有细小差别,但是查询分析器会自动进行优化,根本不用担心效率问题:)