Я использую SQL Server 2012.
Я пытаюсь оптимизировать запрос, который выглядит примерно так:
SELECT TOP 20 ta.id,
ta.name,
ta.amt,
tb.id,
tb.name,
tc.name,
tc.id,
tc.descr
FROM a ta
INNER JOIN b tb
ON ta.id = tb.id
INNER JOIN c tc
ON tb.id = tc.id
ORDER BY ta.mytime DESC
Запрос занимает около 5-6 секунд. Имеются индексы для всех столбцов, используемых в соединениях. Таблицы имеют 500 тыс. записей.
Мой вопрос: когда я удаляю столбцы tc.name, tc.id и tc.descr из выбора, запрос возвращает результаты менее чем за секунду. Почему?
JOIN
. Вы должны начать с самой большой таблицы, затемJOIN
к меньшим таблицам. - person Kermit   schedule 23.01.2013c
часто пишут? - person MikeSmithDev   schedule 23.01.2013EXPLAIN
, также укажите результаты в вопросе. - person Andy Lester   schedule 23.01.2013