从表中选择列和连接两个表

时间:2016-04-12 04:22:33

标签: sql-server performance select join indexing

我想在以下两种情况的表现之间做出决定。

  1. 我应该将table-2的相同数据复制到table-1,创建相同的列并使用简单的SELECT查询获取这些数据。
  2. OR

    1. 我应该使用JOIN连接两个表并获取相同的数据。
    2. 我有以下几点可以玩:

      1. 表-1->超过300,000行
      2. 表-2 - >超过200,000行
      3. 复合PK,有两列是必要的
      4. 外键索引
      5. 许多用户(> 50)
      6. 在每个报告和其他功能中大量使用表格

1 个答案:

答案 0 :(得分:1)

不要创建冗余数据。

使用联接并在联接字段上使用COVERING INDEX,或者在联合字段(FK字段)的索引中使用INCLUDE table2.field。

CREATE NONCLUSTERED INDEX IX1
    ON Table2 (YourFK_Field)
    INCLUDE (TheRedundantField);

这样,当SQL Server读取IX1时,它也会读取TheRedundantField。

你也可以像这样创建覆盖索引

CREATE NONCLUSTERED INDEX IX1
    ON Table2 (YourFK_Field, TheRedundantField)

但这不是一个好主意,因为可能TheRedundantField不是关键字段