【发布时间】:2015-12-08 08:21:55
【问题描述】:
Subject表:
Id int
DepartmentId int
GroupId int
SchoolId int
Name varchar(255)
查询
查询 #1
SELECT *
FROM [Subject] t1, [Department] t2
WHERE t1.DepartmentId = t2.DepartmentId
查询 #2
SELECT *
FROM [Subject] t1, [Group] t2, [Department] t3
WHERE t1.GroupId = t2.GroupId
AND t1.SchoolId = t3.DepartmentId
查询 #3
SELECT *
FROM [Subject] t1, [Group] t2, [School] t3
WHERE t1.GroupId = t2.GroupId
AND t1.SchoolId = t3.SchoolId
我应该为表“主题”创建 3 个索引,还是一个就足够了?
解决方案 1
创建一个索引:departmentId + GroupId + SchoolId
解决方案 2
创建三个索引:
-
DepartmentId用于存储过程 1。 -
DepartmentId + GroupId用于存储过程 2。 -
GroupId + SchoolId用于存储过程 3。
非常感谢!
【问题讨论】:
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(20 多年前),不鼓励使用它
标签: sql sql-server indexing