读书人

关于查询语句效率的差别有关问题

发布时间: 2012-04-01 17:23:46 作者: rapoo

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

读书人网 >SQL Server

热点推荐