SQL - LEFT JOIN занимает очень много времени для выполнения - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь проверить, есть ли в таблице A какие-либо строки, которые я пропустил в таблице B.

Для этого я использую следующий запрос:

SELECT t1.cusa
FROM patch t1
LEFT JOIN trophy t2
ON t2.titleid = t1.titleid
WHERE t2.titleid IS NULL

И запрос работал раньше, но теперь, когда в таблице trophy содержится около 200 000 строк, он чрезвычайно медленный.Я ждал 5 минут для его выполнения, но он все еще загружался и время ожидания истекло.

Есть ли способ ускорить этот запрос?

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Добавление индексов к titleId в обеих таблицах (но особенно в t2) - это самый быстрый способ повысить производительность.200K записей - это ничто для SQL Server.

0 голосов
/ 04 апреля 2019

Попробуйте, и это может работать немного лучше!

SELECT t1.cusa
FROM patch t1
WHERE NOT EXISTS (SELECT 1
    FROM trophy t2
    WHERE t2.titleid = t1.titleid );
...