В соответствии с вашим комментарием «Спасибо за ваш ответ. Что вы имеете в виду под индексом в столбце идентификатора?», Вам необходимо убедиться, что таблицы ботов имеют индекс по идентификатору.Предполагая, что в обоих случаях идентификатор является уникальным и первичным ключом, вы должны выполнить:
ALTER TABLE A ADD PRIMARY KEY (ID)
ALTER TABLE B ADD PRIMARY KEY (ID)
И после этого он должен работать нормально, я бы порекомендовал вам предложение NOT EXISTS, как показано ниже:
SELECT
ID
OTHER COLUMNS
FROM A
WHERE NOT EXISTS (SELECT ID FROM B WHERE A.ID = B.ID)
Если он все еще медленный, сгруппируйте его в меньшие наборы, как показано ниже:
WHILE 1 = 1
BEGIN
BEGIN TRANSACTION;
SELECT TOP 100000
ID
OTHER COLUMNS
FROM A
WHERE NOT EXISTS (SELECT ID FROM B WHERE A.ID = B.ID);
IF @@ROWCOUNT = 0
BEGIN
COMMIT
BREAK
END
COMMIT;
END;
Это будет выполнять отдельные транзакции для числа строк, выбранных вами в строке «SELECT TOP 100000».