Старый IN против Exists против Left Join (где ___ равен или не равен нулю); Спектакль

Я нашел себя в довольно рассол. У меня есть таблицы только из одного столбца (списки подавления или включения), которые более или менее varchar (25), но дело в том, что у меня не будет времени проиндексировать их, прежде чем использовать их в основном запросе, и, в зависимости от того, насколько это важно, Я не буду знать, сколько строк в каждой таблице. Базовая таблица в основе всего этого составляет около 1,4 миллиона строк и около 50 столбцов.

Мои предположения следующие:

IN не должен использоваться в случаях, когда возвращается много значений (строк), потому что он просматривает значения последовательно, верно? (IN в подзапросе не передал значения напрямую)

Объединения (INNER для включения и LEFT и проверка на NULL при подавлении) лучше всего подходят для больших наборов данных (более 1 тыс. Строк или около того).

EXISTS всегда беспокоил меня, потому что, кажется, он выполняет подзапрос для каждой строки (всего 1,4 миллиона? Yikes.)

Моя интуиция говорит, что, если это возможно, получите счетчик таблицы подавления и используйте либо IN (для строк меньше 1k), либо INNER / LEFT Join (для таблиц подавления выше 1k строк). Примечание, и поле, на которое я буду подавлять, будет индексом в большой базовый стол, но стол подавления не будет. Мысли?

Заранее благодарим за любые комментарии и / или советы.

Ответы на вопрос(2)

Ваш ответ на вопрос