En primer lugar, debo señalar que no tengo mucho conocimiento sobre los índices de SQL Server.La indexación mejorará el rendimiento de consultas varchar (max) y cómo crear el índice
Mi situación es que tengo una tabla de base de datos de SQL Server 2008 que tiene una columna varchar (max) generalmente llena con un lote de texto.
aplicación webMi ASP.NET tiene una función de búsqueda que pregunta en esta columna para las búsquedas de palabras clave, y en función del número de palabras clave buscadas por su puede ser uno o muchos COMO '% palabra clave%' declaraciones en la consulta SQL para hacer la búsqueda
Mi aplicación web también permite buscar otras columnas en esta tabla, no solo esa columna. También hay algunas combinaciones de otras tablas también.
Mi pregunta es, ¿vale la pena crear un índice en esta columna para mejorar el rendimiento de estas consultas de búsqueda? Y si es así, ¿qué tipo de índice bastará para indexar una columna o debo incluir otras columnas, como la clave principal y otras columnas de búsqueda?
Diego, según tengo entendido, podría indexar en una columna varchar (max) siempre que es un índice fuera de clúster, sin clústeres y que la columna var (max) está INCLUDEed, por ejemplo CREATE INDICE NO CLASIFICADO IndexName ON TableName (SomeColumn) INCLUDE (VarcharMaxColumn) WITH (ONLINE = OFF) – johna
varchar (max) solo puede estar en incluido en un índice, significa que solo los niveles de hoja participarán en el índice, lo que significa que apenas se utilizará en una consulta de búsqueda – Diego
CON (ONLINE = OFF) no es una propiedad del índice. Indica que el índice se establecerá fuera de línea durante la creación. Si lo configura en ON, el índice se creará en tempDB y se podrá acceder a la tabla durante el proceso de creación del índice. Se debe usar para tablas enormes donde la creación de un índice lleva mucho tiempo y la tabla no puede ser inaccesible durante la creación – Diego