Оптимизация оператора соединения SQL - PullRequest
0 голосов
/ 14 апреля 2011

Я объединяю две таблицы. Первый содержит рабочие задания и связанные с ними номера деталей. Вторая содержит спецификацию для всех номеров деталей. Они оба большие столы. По отдельности я могу запросить две таблицы за секунды, если не меньше. Когда я выполняю соединение, это занимает минуты. Возможно ли, что где в конце этого оператора выполняется после объединения? Если объединение будет выполнено первым, это может занять много времени. Но если первая таблица будет уменьшена в первую очередь на «где», я думаю, что это должно пройти быстро. Есть ли способ написать более оптимизированный запрос?

SELECT  Table2.ItemNum As ItemNum  
FROM Table1  
INNER Join Table2  
ON Table1.PartNum = Table2.PartNum
WHERE Table1.WorkOrder = 10100314

1 Ответ

1 голос
/ 14 апреля 2011

Это улучшит работу:

SELECT  Table2.ItemNum As ItemNum  
FROM Table2  
INNER JOIN
(
    SELECT * 
    FROM Table1
    WHERE Table1.WorkOrder = 10100314
)AS Table1
ON Table1.PartNum = Table2.PartNum

Также требуются индексы для полей PartNum ...

...