代码之家  ›  专栏  ›  技术社区  ›  David-W-Fenton

为SQL Server复合键的各个字段编制索引

  •  8
  • David-W-Fenton  · 技术社区  · 14 年前

    我正在将一个Jet数据库升级到sqlserverexpress2008r2,在升级之前,我正在重新评估这个模式(它是在1997-98年设计的,而设计它的人(即我)是个白痴!)。

    在SQLServer中这是个好主意吗?

    3 回复  |  直到 14 年前
        1
  •  15
  •   Joe Stefanelli    14 年前

    同样的规则也适用于SQL Server。如果在(ColumnA,ColumnB)上有索引,则只对ColumnA或ColumnA和ColumnB一起进行的查询可以使用索引,但只对ColumnB进行的查询不能使用索引。如果只需要在ColumnB上连接,那么您肯定应该创建索引。

        2
  •  5
  •   Remus Rusanu    14 年前

    如果列上有复合索引 (A,B) 任何seek、range scan、sort或aggregate操作都不能对包含 B . 这对于SQLServer是正确的,就像对于Jet(Red)驱动程序一样(我认为对于 Jet Blue skip scan 操作。

    所以答案是需要在 (B) 一个人。

        3
  •  4
  •   Luka Milani    14 年前

    为了给您提供更多帮助,只需提示一下,在使用managementstudio的sqlserver中,您可以通过“显示估计的执行计划”来评估性能。它展示了indexs和join的工作原理。

    您还可以使用DTA(数据库引擎优化顾问)获得更多信息和优化。