tipos - Faltan los detalles del índice SQL
sintaxis indices sql (2)
Estoy ajustando mi servidor SQL y cuando muestro mi plan de ejecución para una de mis consultas en la parte superior, se lee:
"Índice que falta (impacto 99.7782): CREAR ÍNDICE NO CLUSTRADO ..."
Así que miré los detalles del índice que faltan y está mostrando esto:
/*
Missing Index Details from ExecutionPlan1.sqlplan
The Query Processor estimates that implementing the following index could improve the query cost by 99.7782%.
*/
/*
USE [phsprod]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[address] ([userid])
GO
*/
Solo he estado trabajando con SQL durante aproximadamente un mes y nunca he hecho nada con esto, ya que todas mis tablas ya se han creado para mí. ¿Puede alguien ayudarme a explicarme / darme alguna idea sobre qué hacer con esto? Gracias.
Eso significa que SQL Server sugiere que su consulta podría ejecutarse más rápido con este índice.
Puede significar que sus índices actuales no son los mejores para la consulta que está ejecutando. Tal vez su consulta podría ser optimizada. O quizás PODRÍAS añadir el índice. Pero si decides hacer esto, debes analizarlo cuidadosamente.
De hecho, los índices añaden gastos generales y almacenamiento en disco. Pero, también puede mejorar el rendimiento. Por ejemplo, si siempre busca en su tabla basándose en un "ID de usuario", entonces tal vez pueda obtener beneficios para agregar un índice en esa columna, ya que SQL podrá buscarlo para identificar este índice.
Piense un poco de esto como si buscara una palabra en un diccionario. Si buscas la palabra "perro", vas a buscar "d" y luego las palabras que comienzan con "hacer" para finalmente encontrar la palabra "perro".
Si las palabras no estuvieran en orden alfabético en el diccionario, tendrías que buscar todo el diccionario para encontrar la palabra "perro".
Un índice agrupado (o una clave principal) es el orden de sus columnas. En este momento, parece que no tiene un índice en la columna "ID de usuario". Entonces, SQL Server tiene (probablemente) para escanear toda la tabla hasta que encuentre el ID de usuario.
Si agrega un índice no agrupado, no reordenará su tabla, pero le dirá a SQL Server entre qué rango debe buscar para encontrar el ID de usuario que desea. (Al igual que "en el diccionario, entre las páginas 20 y 30") Por lo tanto, no tendrá que buscar en toda la tabla para encontrarla.
Pero también significa que cuando agrega nuevos datos a la tabla, o elimina o modifica, necesita mantener su índice actualizado. En general, algunos índices no duelen, pero debe asegurarse de que sean necesarios. No querrá agregar demasiados índices, ya que pueden perjudicar el rendimiento si agrega demasiado.
Y si su tabla contiene solo unos pocos cientos de filas, tal vez no le muestre una gran mejora en el rendimiento. Pero con el tiempo, cuando tu mesa crezca, puede hacer una diferencia.
¡Espero que ayude!
Eso significa que SQL Server sugiere que su consulta podría ejecutarse más rápido con un índice. Los índices agregan gastos generales y almacenamiento en disco, por lo que debe ignorar esta sugerencia a menos que la consulta esté dando problemas de rendimiento en la producción.
Para crear el índice, elimine el comentario de la declaración después de su use
, reemplace [<Name of Missing Index, sysname,>]
con un nombre real y ejecútelo:
USE [phsprod]
GO
CREATE NONCLUSTERED INDEX IX_Address_UserId
ON [dbo].[address] ([userid])