Uno de los grandes problemas que nos podemos encontrar en una consulta TSQL es el uso del operador OR , el mismo es considerado un anti-patron de performance.

En este post veremos como podemos mejorar la performance de una consulta de SQL Server la cual contiene este operador.

Supongamos que tenemos la siguiente consulta:

Si observamos su plan de ejecución nos encontraremos con un Scan sobre el índice clustered que es lo mismo que recorrer toda la tabla.
Ahora vamos a cambiar nuestra consulta usando UNION en lugar del operador OR
Si observamos el plan de ejecución veremos que no solo ha cambiado sino que además nos sugiere crear índices
Para mejorar nuestra nueva consulta con el UNION le crearemos los dos siguientes índices
Ejecutaremos nuestra consulta original con el OR y la nueva con el UNION ya con los índices creados para ver los planes de ejecución y costos
Como se puede observar en los planes de ejecución hay una gran mejora de performance usando el UNION, donde el plan con el OR tiene un costo de "0.63" haciendo un Index Scan vs los "0.023" usando el UNION y con Index Seek.
Share This