“join”列或“where”列上的聚簇索引

时间:2011-09-23 01:00:15

标签: sql join

我在SQL Server中有两个表 表A有两列:ID和Name。它们都是独一无二的 表B连接到“名称”列上的表A.

假设对这些表的大多数查询都是:

Select A.Name, B.xyz From A Inner Join B on A.Name = B.Name Where ID = 1  

我想在表A中的哪一列创建聚簇索引? ID加速WHERE或Name以加速JOIN?

2 个答案:

答案 0 :(得分:2)

我认为你根本不想要聚集索引。你只想要一个常规索引。 (除非您希望按顺序读取所有数据。)

你想要的是两个字段的索引,第一个ID和第二个Name

所以有三个指标:

ID Primary
Name Unique
ID, Name Unique

创建最后一个索引的唯一原因是您的数据库是否支持索引合并。否则你只想要ID上的索引。索引中未使用A.NameA.Name是数据,而不是搜索键。您需要B.Name上的索引。

答案 1 :(得分:0)

NAME 列,因为它是唯一的,您更有可能对此进行搜索/加入。