(SQL Server 新手)我很难理解 SQL Server 中非聚集索引的用途。阅读 MS 文档(包含漂亮图片的 v2012 和 v2008)和一些在线资源,但仍有许多未解决的问题。
- 非CL。索引维护排序的 B 树?据我所知,它确实如此 - http://technet.microsoft.com/en-us/library/aa933130%28v=sql.80%29.aspx,否则书籍索引的类比没有任何意义。
- 为什么你想要 noncl。要在具有聚集索引或堆上的表或视图上定义索引?堆没有顺序,所以定义了noncl。堆上的索引是有道理的——你可以快速找到完全匹配的。但是,带有聚簇索引的表是已经组织好的数据,并且定义了noncl。索引只会加快精确搜索。
你在这里有两个问题:
1.非聚集索引是否有排序的B树?是的,因为您必须到达索引的正确页面才能找到您要查找的数据。
2. 既然有聚簇索引,为什么还要非聚簇索引?将电话簿的白页视为您的聚集索引。如果您想查找您所在城市中所有名字为“布伦特”的人,那么聚簇索引对您的帮助不大——聚簇索引基于姓氏、名字和中间名首字母。将单独的电话簿按名字排序不是很有帮助吗?
就像在现实生活中一样,答案可能是“是”或“否”——但这取决于您按名字搜索人的频率,人们进/出您所在城市的频率,或者人们改名的频率。