У меня есть следующие таблицы:
Финансовые
- PK_FinancialID
- FK_SchoolID
Школа
Класс
- PK_ClassID
- FK_SchoolID
- ИмяКласс
И у Class, и у Financial есть связи по внешнему ключу со школой. Я хочу сделать запрос, который бы отображал все классы, связанные с финансовыми строками, которые соответствуют определенным критериям.
Изначально я думаю построить запрос следующим образом:
Select Class.ClassName
From Class
Join School on Class.FK_SchoolID = School.PK_SchoolID
Join Financial on Financial.FK_SchoolID = Schol.PK_SchoolID
Where Financial ... -- define criteria
Однако, так как Financial и Class объединяются в столбце PK_SchoolID, должна быть возможность переписать запрос следующим образом (вырезать таблицу School и напрямую соединить Class и Financial):
Select Class.ClassName
From Class
Join Financial on Financial.FK_SchoolID = Class.FK_SchoolID
Where Financial ... -- define criteria
Какой подход предпочтительнее с точки зрения sql? Повысит ли включение таблицы «Школьный» производительность, поскольку на реальную запись PK ссылаются (и, таким образом, можно ссылаться на Кластерный индекс)? Или это не имеет значения? Что-то, чего мне не хватает?
Платформа: Sql Server 2005. Все таблицы имеют свои столбцы PK и FK, должным образом объявленные и определенные.