Как оптимизировать SQL-запрос ?
У меня есть 3 таблицы, как показано ниже
Student stdId stdName stdCourseID StudentCources stdCourseID courseName stdeventID StudentEvents stdeventID eventName
я хочу заполнить все эти свойства, как показано ниже
stdId stdName stdCourseName stdEventName
когда я пытаюсь выполнить этот запрос , я получаю дубликаты stdId, stdName и stdCourseID follewd по списку удаляемых элементов corseName и eventName
select * from Student as s WITH(NOLOCK) join StudentCources as se WITH(NOLOCK) on sc.stdCourseID = s.stdCourseID join StudentEvents as se WITH(NOLOCK) on se.stdeventID = se.stdeventID where s.stdId=118
Что я уже пробовал:
select name,courseName,eventName from Student as s WITH(NOLOCK) join StudentCources as se WITH(NOLOCK) on sc.stdCourseID = s.stdCourseID join StudentEvents as se WITH(NOLOCK) on se.stdeventID = se.stdeventID where s.stdId=118
Не могли бы вы рассказать мне, как оптимизировать этот запрос, который должен извлекать все данные
Richard Deeming
Вы использовали se
как псевдоним для обоих StudentCources
(должно быть "курсы") и StudentEvents
Я предполагаю, что это опечатка в вашем вопросе, так как SQL этого не допустит.
Вы также присоединились к StudentEvents
таблица сама по себе, а не к таблице курсов:
on se.stdeventID = se.stdeventID
DGKumar
Извините, что ниже приведен фактический запрос. Требуется ли какая-либо оптимизация для приведенного ниже запроса
выберите имя,имя курса,имя события от студента как s с помощью(NOLOCK)
присоединяйтесь к StudentCources как sc с(NOLOCK) на sc.stdCourseID = s.stdCourseID
присоединяйтесь к StudentEvents как se с(NOLOCK) на se.stdeventID = sc.stdeventID
где s.stdId=118