首页 > 其他 > 详细

索引

时间:2014-02-27 19:33:44      阅读:535      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
全表扫描:对数据进行检索效率最差的是全表扫描,就是一条一条的找。
聚集索引
索引的顺序与磁盘存储的顺序对应
所以只能有一个聚集索引,否则磁盘存储的顺序就无法确定了


非聚集索引
索引的顺序与磁盘的存储顺序不对应
逻辑顺序与物理顺序不一致


索引意味着排序,排序后则可更高效的查询,但是因为索引也是占据空间的,
而且添加、更新、删除数据的时候也需要同步更新索引,
降低了插入和更新的效率



依赖聚集索引不然就依赖磁盘存储的顺序


填充引子 便于后期数据的插入,而不会改动过多的数据
每页预留8kb,其实数据并存的数据并没有8kb,但便于后期的数据的插入
逻辑读取:从缓存中读取数据。
物理读取:从磁盘中读取数据
预读取:一种性能优化机制,在执行查询时先预测执行“查询计划”所需的数据
和索引页,然后在查询实际使用这些页之前将它们读入缓冲高速缓存。
bubuko.com,布布扣

 

bubuko.com,布布扣
-----------索引演示-------------
--1.打开统计信息:查询→查询选项→高级→SET STATISTICS TIME、SET STATISTICS IO
--2.打开“实际的执行计划”或“估计的执行计划”。
select c3,c4 from TestIndex1002 where c4>800 and c4<1000 order by c4 asc

--建立索引 (因为查询的时候是在c3,c4上建查询,而且查询中对c4排序,而在c4上建立索引就有了排序了)
create clustered index  IXc4 On TestIndex1002(c4)--建立索引之后再执行以上查询语句,就快速多了

--当遇到排序、区间查询的时候,聚集索引可以大大提高性能。
--(如果为一个表建索引,建议先建一个聚集索引,然后再建其他索引。)

--将where条件变为c3=‘backuplsnparamorhinttext‘,再测试select c3,c4 from TestIndex1002 where c3=‘backuplsnparamorhinttext‘,
--虽然有一个聚集索引但是这个查询的where条件并没有充分利用该索引的优点,索引性能提升并不大。
select c3,c4 from TestIndex1002 where c3=backuplsnparamorhinttext

create nonclustered index IXc3 on TestIndex1002(c3)--这时候查询的效率就大大提高了
--模糊查询,还是会对表全表扫描,
select c3,c4 from TestIndex1002 where c3=%backupls%
--优化查询
select c3,c4 from TestIndex1002 where c3=backupls%

------------
--删除索引
drop index  TestIndex1002. IXc4

--下面为 工具——数据库引擎顾问生成的代码  (将sql代码放进数据库中)
CREATE NONCLUSTERED INDEX [_dta_index_TestIndex1002_11_1781581385__K4_3] ON [dbo].[TestIndex1002] 
(
    [c4] ASC
)
INCLUDE ( [c3]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
bubuko.com,布布扣

索引,布布扣,bubuko.com

索引

原文:http://www.cnblogs.com/tobecabbage/p/3570150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!