我在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?
答案 0 :(得分:2)
我认为你根本不想要聚集索引。你只想要一个常规索引。 (除非您希望按顺序读取所有数据。)
你想要的是两个字段的索引,第一个ID
和第二个Name
。
所以有三个指标:
ID Primary
Name Unique
ID, Name Unique
创建最后一个索引的唯一原因是您的数据库是否支持索引合并。否则你只想要ID
上的索引。索引中未使用A.Name
,A.Name
是数据,而不是搜索键。您需要B.Name
上的索引。
答案 1 :(得分:0)
NAME 列,因为它是唯一的,您更有可能对此进行搜索/加入。