Все разработчики знают, что "IN" и DISTINCT создают проблему для всех SQL-запросов.
Это не обязательно так.Они ухудшают производительность, но иногда они необходимы.
IN
, вероятно, не имеет большого значения.Это оценивается один раз.Если у вас есть другой способ передачи списка - скажем, с использованием временной таблицы - это лучше.
COUNT(DISTINCT id)
является подозрительным.Я ожидаю, что id
уже будет уникальным.Если так, то просто используйте COUNT(*)
.
WITH (NOLOCK)
не рекомендуется, если вы действительно не знаете, что делаете.Работа с данными, которые могут быть противоречивыми, опасна.