Tengo muchos-a-muchos de la tabla, vamos a decir:

PersonJob(personId,jobId)

con un índice agrupado (personId,jobId).

La pregunta es:

Si en algún lugar en SQL voy a hacer una consulta como:

SELECT *
FROM PersonJob JOIN Job ON PersonJob.jobId = Job.jobId
.......

tomará ventaja de que el índice agrupado para encontrar registros con particular jobId en PersonJob mesa ? O sería mejor de la creación de nuevo no clusterd índice no único en jobId columna en PersonJob tabla?

Gracias
Pawel

La hoja páginas del índice agrupado en realidad contienen los datos de la fila – que es donde las filas de datos que se almacenan para una tabla con un índice agrupado. Por lo menos hay un índice no agrupado que incluye todas las columnas pertinentes para una consulta (que se llama un índice de cobertura), cada consulta siempre tendrá acceso el índice agrupado en algún momento.
Es bueno saber. Gracias.
Si a usted le gustaría aprender más acerca de los índices: echa un vistazo a mi SQL Indexación tutorial (también para SQL Server). La página de multi-índices de las columnas, explica por qué su consulta no puede hacer un uso eficiente de la (agrupado) índice tiene.

OriginalEl autor dragonfly | 2011-03-25

1 Comentario

  1. 15

    No tienen ninguna ventaja desde el índice agrupado y su consulta aún tendría que escanear todas las filas de la PersonJob tabla.

    Si las columnas se han invertido en el índice agrupado (jobID, personId), a continuación, usted aprovecharía el índice.
    Considere la posibilidad de que un índice clúster ordena las filas en la tabla los valores de las columnas que forman el índice. Así que con un índice agrupado en (personId, jobID) tiene todas las filas con el mismo personId «agrupados» juntos (en orden de jobID), pero las filas con el mismo jobID todavía están dispersos alrededor de la mesa.

    Pensé soo. Pero cuando voy a ejecutar el «plan de ejecución estimado» se demostró, que la que se utiliza el índice de todos modos.
    Lo que hizo show – clustered index seek o clustered index scan (que es similar a la exploración de la tabla)? Si usted está interesado en cómo entender los planes de ejecución consulte este enlace: stackoverflow.com/questions/758912/…
    Gracias por los recursos. Ahora, yo he jugado con diferentes combinaciones de indexex y lo @Damien_The_Unbeliever escribió parece ser parte de razón. Cuando he añadido único índice de columna en jobID columna que reemplazó a la anterior exploración en el índice agrupado. El costo de ese paso se desplomaron de un 45% a un 10%, también los números de las filas de escaneado en SQL Server la ventana de información la ventana de la reducción de 11.000 a 10 🙂 – 10 es el número de los imaginarios puestos de trabajo que la consulta devuelve 🙂 de todos Modos, antes de hacer cualquier conclusión voy a leer más acerca de los índices y de cómo analizar el plan de ejecución. Muchas gracias.

    OriginalEl autor Paolo Falabella

Dejar respuesta

Please enter your comment!
Please enter your name here