【问题标题】:Best practice for indexing in SQL ServerSQL Server 中索引的最佳实践
【发布时间】:2017-02-24 09:48:33
【问题描述】:

我有一个交易表和一个库存表,我想将它们“加入”在一起。这些表需要在三个主键上“加入”。

我的问题是:我应该创建一个唯一键(三个字段的串联)并在唯一键上创建一个“索引”,还是只在所有三个字段上创建一个非集群“索引”?

我目前使用的是 SQL Server 2014

【问题讨论】:

  • Pk 通常是表的聚集索引(默认情况下)。因此,如果您需要加入两个 PK 并且它们是聚集索引,则您无需执行任何操作。
  • 对造成的混乱表示歉意。树字段在 DB 结构中未标记为 PK。我的意思是这三个字段使记录独一无二,应该用于加入。
  • 那么在此处添加索引可能会很有趣,是的。不过,我不会去创建那种串联。

标签: sql sql-server indexing


【解决方案1】:

我猜 Transaction 表是最大的,而 Inventory 是较小的。很大程度上取决于您希望连接返回的数据比例 - 如果最多,则可能会发生表扫描,因此索引不会有太大帮助。如果您要尝试获取一小部分日期,则在两个表的 3 列上创建一个索引,并在 3 个列上创建一个从 Trans 到 Inventory 的外键。 (SQL Server 需要索引和 FK) 选择最细化的列作为索引中的第一个列,因为这将鼓励 SQL 服务器优化器使用索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多