使用非聚集索引进行高效搜索

Using non clustered index for efficient searching

我在三列的组合上创建了非聚集索引。是否需要在where条件下指定所有三列才能使用非聚簇索引

简短的回答是否定的。

如果至少索引中的第一列出现在您的 where 子句中,则可以使用索引 。 它是否 被使用已经取决于优化器,但假设你在 where 子句中的其他列上没有任何其他索引,它可能是用过。

为了利用您的索引,您必须像这样使用。

索引:Ix_threecols(c1,c2,c3)

1. select c1,c2,c3 from table where c1=val
and c2=val and c3=val
2. select c1,c2,c3 from table where c1=val
and c2=val
3. select c1,c2,c3 from table where c1=val

索引中最左边的第一列应该用在 where 子句中。 请不要在 select 中使用 (*),因为它可能会导致索引扫描。

我们必须检查执行计划以对此进行更多分析。