ric*_*ent 3 t-sql sql-server indexing clustered-index
请考虑以下复合聚簇索引:
CREATE UNIQUE CLUSTERED INDEX ix_mytable ON mytable(a, b)
Run Code Online (Sandbox Code Playgroud)
显然,在一个单独的索引b将使搜索的特定值b更快.
但是,如果在一个单独的索引b是不使用,在我看来,该指数仍然可以用于查找特定值元b,而不是表扫描,通过遍历的离散值的树一个做对于本地搜索b,跳转到下一个值一,等
这是SQL Server的工作原理吗?(例如,如果MSSQL对具有多列的索引使用单个哈希值,则不会这样.)
它是,并且由于其他原因已经需要复合索引,并且a的离散值的数量足够小,性能/空间权衡可能摆脱具有b的单独索引.
(以上UNIQUE和集群约束不是真正需要对于这个例子,但它们将代表的最快检索b不涉及一个单独的索引为b --the前者提供的快捷方式的每个循环一个,后者除去查找中的一个间接度).