技术开发 频道

详解SQL Server数据库索引

三、使用聚集索引或非聚集索引的场景 (注:优先级依次为推荐,应,不应)
使用聚集索引或非聚集索引的场景

四、主键和聚集索引的比较

主键和聚集索引的比较

以下是一些大众点评网中测试使用的示例:

CHECKPOINT
DBCC DROPCLEANBUFFERS
SET STATISTICS IO ON
declare @d datetime
set @d=getdate()

SELECT * FROM ASPNet_zSurvey.ZS_User WHERE UserAddDate>'2008-06-01' AND UserAddDate<'2008-06-10'

select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

--(45077 行受影响)
--
表'ZS_User'。扫描计数1,逻辑读取1103 次,物理读取2 次,预读1090 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。
--
2543

CHECKPOINT
DBCC DROPCLEANBUFFERS
SET STATISTICS IO ON
declare @d datetime
set @d=getdate()

SELECT * FROM ASPNet_zSurvey.ZS_User WITH (INDEX=IX_UserAddDate) WHERE UserAddDate>'2008-06-01' AND UserAddDate<'2008-06-10'

select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

--(45077 行受影响)
--
表'ZS_User'。扫描计数1,逻辑读取45165 次,物理读取133 次,预读141 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

--3860

五、使用索引的代价

索引需要占用数据表以外的物理存储空间。
创建索引和维护索引要花费一定的时间。
当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。
0
相关文章