SQL Server 索引基础知识----聚集索引,非聚集索引.doc

上传人:m**** 文档编号:546017255 上传时间:2023-06-27 格式:DOC 页数:9 大小:240.01KB
返回 下载 相关 举报
SQL Server 索引基础知识----聚集索引,非聚集索引.doc_第1页
第1页 / 共9页
SQL Server 索引基础知识----聚集索引,非聚集索引.doc_第2页
第2页 / 共9页
SQL Server 索引基础知识----聚集索引,非聚集索引.doc_第3页
第3页 / 共9页
SQL Server 索引基础知识----聚集索引,非聚集索引.doc_第4页
第4页 / 共9页
SQL Server 索引基础知识----聚集索引,非聚集索引.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《SQL Server 索引基础知识----聚集索引,非聚集索引.doc》由会员分享,可在线阅读,更多相关《SQL Server 索引基础知识----聚集索引,非聚集索引.doc(9页珍藏版)》请在金锄头文库上搜索。

1、不论是 聚集索引,还是非聚集索引,都是用B+树来实现的。我们在了解这两种索引之前,需要先了解B+树。如果你对B树不了解的话,建议参看以下几篇文章:BTree,B-Tree,B+Tree,B*Tree都是什么 http:/ B+ 树的结构图:B+ 树的特点: 所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的; 不可能在非叶子结点命中; 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;B+ 树中增加一个数据,或者删除一个数据,需要分多种情况处理,比较复杂,这里就不详述这个内容了。 聚集索引(Clustered Index) 聚集

2、索引的叶节点就是实际的数据页 在数据页中数据按照索引顺序存储 行的物理位置和行在索引中的位置是相同的 每个表只能有一个聚集索引 聚集索引的平均大小大约为表大小的5%左右下面是两副简单描述聚集索引的示意图: 在聚集索引中执行下面语句的的过程:select * from table where firstName = Ota 一个比较抽象点的聚集索引图示: 非聚集索引 (Unclustered Index) 非聚集索引的页,不是数据,而是指向数据页的页。 若未指定索引类型,则默认为非聚集索引 叶节点页的次序和表的物理存储次序不同 每个表最多可以有249个非聚集索引 在非聚集索引创建之前创建聚集索引

3、(否则会引发索引重建)在非聚集索引中执行下面语句的的过程:select * from employee where lname = Green一个比较抽象点的非聚集索引图示: 什么是 Bookmark Lookup 虽然SQL 2005 中已经不在提 Bookmark Lookup 了(换汤不换药),但是我们的很多搜索都是用的这样的搜索过程,如下:先在非聚集中找,然后再在聚集索引中找。 在 http:/ 提供的一个例子中,就给我们演示了 Bookmark Lookup 比 Table Scan 慢的情况,例子的脚本如下:USE CREDITgo- These samples use the C

4、redit database. You can download and restore the- credit database from here:- http:/ NOTE: This is a SQL Server 2000 backup and MANY examples will work on - SQL Server 2000 in addition to SQL Server 2005.- (1) Create two tables which are copies of charge:- Create the HEAPSELECT * INTO ChargeHeap FRO

5、M Chargego- Create the CL TableSELECT * INTO ChargeCL FROM ChargegoCREATE CLUSTERED INDEX ChargeCL_CLInd ON ChargeCL (member_no, charge_no)go- (2) Add the same non-clustered indexes to BOTH of these tables:- Create the NC index on the HEAPCREATE INDEX ChargeHeap_NCInd ON ChargeHeap (Charge_no)go- Cr

6、eate the NC index on the CL TableCREATE INDEX ChargeCL_NCInd ON ChargeCL (Charge_no)go- (3) Begin to query these tables and see what kind of access and I/O returns- Get ready for a bit of analysis:SET STATISTICS IO ON- Turn Graphical Showplan ON (Ctrl+K)- First, a point query (also, see how a bookma

7、rk lookup looks in 2005)SELECT * FROM ChargeHeap WHERE Charge_no = 12345goSELECT * FROM ChargeCL WHERE Charge_no = 12345go- What if our query is less selective?- 1000 is .0625% of our data. (1,600,000 million rows)SELECT * FROM ChargeHeap WHERE Charge_no 1000goSELECT * FROM ChargeCL WHERE Charge_no

8、1000go- What if our query is less selective?- 16000 is 1% of our data. (1,600,000 million rows)SELECT * FROM ChargeHeap WHERE Charge_no 16000goSELECT * FROM ChargeCL WHERE Charge_no 16000go- (4) Whats the EXACT percentage where the bookmark lookup isnt worth it?- What happens here: Table Scan or Boo

9、kmark lookup?SELECT * FROM ChargeHeap WHERE Charge_no 4000goSELECT * FROM ChargeCL WHERE Charge_no 4000go- What happens here: Table Scan or Bookmark lookup?SELECT * FROM ChargeHeap WHERE Charge_no 3000goSELECT * FROM ChargeCL WHERE Charge_no 3000go- And - you can narrow it down by trying the middle

10、ground:- What happens here: Table Scan or Bookmark lookup?SELECT * FROM ChargeHeap WHERE Charge_no 3500goSELECT * FROM ChargeCL WHERE Charge_no 3500go- And again:SELECT * FROM ChargeHeap WHERE Charge_no 3250goSELECT * FROM ChargeCL WHERE Charge_no 3250go- And again:SELECT * FROM ChargeHeap WHERE Cha

11、rge_no 3375goSELECT * FROM ChargeCL WHERE Charge_no 3375go- Dont worry, I wont make you go through it all :)- For the Heap Table (in THIS case), the cutoff is: 0.21%SELECT * FROM ChargeHeap WHERE Charge_no 3383goSELECT * FROM ChargeHeap WHERE Charge_no 3384go- For the Clustered Table (in THIS case), the cut-off is: 0.21%SELECT * FROM ChargeCL WHERE Charge_no 3438SELECT * FROM ChargeCL WHERE Charge_no 3439go这个例子也就是 吴家震 在Teched 2007 上的那个演示例子。 小结: 这篇博客只是简单的用几个图表来介绍索引的实现方法:B+数, 聚集索引,非聚集索引,Bookmark Lookup 的信息而已。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号