Un punto importante es que un índice no ayudará en absoluto para ciertos tipos de búsquedas. Por ejemplo:
SELECT * FROM [MyTable] WHERE [MyVarcharColumn] LIKE '%' + @SearchText + '%'
Ninguna cantidad de indexación normal ayudará a esa consulta. Está condenado a ser siempre lento. Esa expresión LIKE
simplemente no es sargable.
¿Por qué? Primero necesita comprender cómo funcionan los índices. Básicamente toman las columnas que se indexan junto con la clave principal (puntero de registro) en una nueva tabla. Luego clasifican esa tabla en la columna indexada en lugar de la clave. Cuando hace una búsqueda utilizando el índice, puede encontrar rápidamente la (s) fila (s) que desea porque este índice está ordenado para facilitar una búsqueda más eficiente utilizando algoritmos como la búsqueda binaria y otros.
Ahora revise esa consulta nuevamente. Al colocar un comodín delante del texto de búsqueda, acaba de decirle a la base de datos que no sabe con certeza con qué comienza su columna. Ninguna cantidad de clasificación ayudará; aún necesita recorrer toda la tabla para asegurarse de encontrar cada registro que coincida con la expresión. Y eso significa que cualquier índice normal en la columna es inútil para esta consulta.
Si desea buscar una columna de texto para una cadena de búsqueda en cualquier lugar de la columna, debe usar algo un poco diferente: un índice de texto completo.
ya por el contrario un vistazo a esta consulta:
SELECT * FROM [MyTable] WHERE [MyVarcharColumn] LIKE @SearchText + '%'
esto va a funcionar perfectamente bien con un índice normal, porque usted sabe cómo espera la columna para empezar. Todavía puede coincidir con los valores ordenados almacenados en el índice, por lo que podemos decir que es sargable.
Piense en un hilo como una serie de números ... ¿ayuda? –