Существует ли эффективный способ удаления записей из SQL Server без использования ключевого слова IN
в следующем сценарии:
-- If Documents were deleted, remove them from your ocean
DELETE FROM IndexHistory
WHERE DocId IN (SELECT IH.Docid
FROM IndexHistory IH
LEFT JOIN IndexedLineItems I ON IH.Docid = I.DocId
WHERE I.Docid IS NULL)
Если вы изучите этот сценарий, у вас есть все записи, которые вы хотите удалитьиз запроса в круглых скобках.
Документально подтверждено, что использование IN неэффективно.Поэтому можно подумать, что должен быть способ удалить их без «IN», потому что все ваши записи могут быть идентифицированы без использования «IN».
Так, например, я думаю, что-то вродеэто может быть возможно, но у меня нет правильного синтаксиса:
DELETE FROM IndexHistory IH
LEFT JOIN IndexedLineItems I ON IH.Docid = I.DocId
WHERE I.Docid IS NULL
Я ценю, что ответ может быть «нет, это невозможно».
Если это невозможноВозможно, это может быть возможным предложением улучшить язык для Microsoft.Перед тем, как сделать это, я подумал, что я опубликую здесь, чтобы увидеть, что я что-то упустил.