El antiguo IN vs. Exists vs. Left Join (donde ___ es o no es nulo); Actuación

Me he encontrado en un aprieto. Tengo tablas de una sola columna (supresión o listas de inclusión) que son más o menos varchar (25), pero la cuestión es que no tendré tiempo para indexarlas antes de usarlas en la consulta principal y, dependiendo de lo importante que sea, No sabré cuántas filas hay en cada tabla. La tabla base en el corazón de todo esto es de unos 1,4 millones de filas y unas 50 columnas.

Mis suposiciones son las siguientes:

IN no debe usarse en casos con muchos valores (filas) devueltos porque se ve a través de los valores en serie, ¿verdad? (IN en una subconsulta no pasó los valores directamente)

Las uniones (INNER para inclusión e IZQUIERDA y comprobación de Nulos cuando la supresión) son las mejores para grandes conjuntos de datos (más de 1k filas más o menos para mecanizar)

EXISTS siempre me ha preocupado porque parece estar haciendo una subconsulta por cada fila (¿todos los 1.4 millones? Yikes).

Mi instinto dice que, si es factible, obtenga el recuento de la tabla de supresión y use IN (para sub 1k filas) e INNER / LEFT Join (para tablas de supresión por encima de 1k filas) Nota, y el campo que estaré suprimiendo se indexará en el tabla base grande pero la tabla de supresión no será. Pensamientos?

Gracias de antemano por todos y cada uno de los comentarios y / o consejos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta