如何索引两个或多个表的 JOIN 结果以提高 SQL Server 中的性能?

Har*_*run 9 index sql-server

我是索引的新手,并了解了索引的基础知识。我可以在相应表的索引部分中找到主键约束的默认聚集索引,但是在创建外键约束后我找不到任何。

现在我有一个要求,应该实施索引以提高性能。我已经阅读了关于索引外键以提高JOIN result的性能的内容。

我是否需要将外键列添加到其他非聚集索引或外键具有默认索引?

如果我的SQL 表结构如下,并且我有一个使用t1_col3 的WHERE 子句JOIN 查询,我如何有效地实现索引

               table1                       table2
               ------                       ------
               t1_col1(pk)                  t2_col1(pk)
               t1_col2                      t2_col2
               t1_col3                      t2_col3
               t1_col4                      t2_col4
               t2_col1(FK)
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 14

默认情况下,外键没有索引。你必须创造一个。

在这种情况下,我会建议其中任何一个。这取决于两列的相对选择性

CREATE INDEX IX_table2fk ON
              table1 (t2_col1, t1_col3)
              INCLUDE (any columns needed for the query)
Run Code Online (Sandbox Code Playgroud)

或者

CREATE INDEX IX_table2fk ON
              table1 (t1_col3, t2_col1)
              INCLUDE (any columns needed for the query)
Run Code Online (Sandbox Code Playgroud)

INCLUDE 将使索引覆盖以避免键/书签查找

  • 包含是 SQL-Server 2005 中的新功能。以防万一您仍在使用 Sql-server 2000。 (2认同)