索引键值存储的信息


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

聚集索引叶级别除了保持键值外,还包含所有数据
非聚集索引叶级别只有需要的键值及书签,以“文件号:页号:槽号”的格式定位
查看索引存储:
–打开3604,信息发送到控制台
DBCC TRACEON(3604)
–查看表索引对应的页数明细
DBCC IND (‘brm_lvjian_new’, ‘frmuser’, -1);
–查看页上的数据信息
DBCC PAGE (brm_lvjian_new, 1, 586958, 1);
在Memory Dump下存储着信息。

不过非聚集索引并不一定比聚集索引快,但where条件,select字段都是复合索引字段时,因索引
空间较小,比件聚集索引查找快一些。
如:在frmUser表中DepartmentID上建立非聚集索引
执行:
SELECT departmentid
FROM frmuser
WHERE DepartmentId = 4

SELECT *
FROM frmuser
WHERE DepartmentId = 4

发现前者通过索引查找一步到位,而后者在索引查找后,因还要取其它值,故还要根据索引页键值中的引用,去数据页取值
这提示:SELECT中的字段少一些速度会更快,一是若字段在一索引内,就避免了去数据页的检索,二是避免了大量数据的I/O操作。
复合索引与对字段分别建索引的区别:
1,复合索引整体空间比分别建索引要小。
2,若查询语句对索引内字段查询,复合索引直接得到位置,而分别建索引需要分别查出再连接
并且当SELECT字段也在索引内时,复合索引会直接得出,而分另建索引则需要去数据页重新取。