Pregunta

Estoy convertir a SQL Server una base de datos Jet a SQL Server Express 2008 R2 y antes de hacerlo, estoy re-evaluar el esquema (que fue diseñado en 1997-98, y el tipo que diseñó (es decir, yo) era algo así como un idiota!).

Mi pregunta es acerca de N: N unirse a las tablas con una clave compuesta de dos columnas. En Jet, se une a la primera columna de una clave compuesta de dos columnas utilizará el índice compuesto, pero se une en la segunda columna no, por lo que, en general, en bases de datos Jet con gran N: N unir tablas con razonablemente un gran número de registros , además de que el índice compuesto agrego un segundo, el índice no único en la segunda columna.

¿Es esta una buena idea en SQL Server?

(Tal vez no es una idea buena de Negro?)

¿Fue útil?

Solución

Se aplican las mismas reglas en SQL Server. Si usted tiene un índice en (ColumnA, ColumnB) una consulta en un solo ColumnA o ColumnA y ColumnB juntos pueden utilizar el índice, pero sólo en una consulta ColumnB no puede. Si hay una necesidad de unir en un solo ColumnB, entonces usted debería crear el índice.

Otros consejos

Si usted tiene un índice compuesto sobre columnas (A,B) sin buscar, rango de exploración especie o agregado operación, se puede utilizar para expresiones que contienen solamente B. Esto es cierto para SQL Server, así como fue cierto para los conductores Jet (rojo) (y creo que para Jet Blue también ). Algunos otros motores podrían utilizarlo en una llamada skip scan operación.

Así que la respuesta es que se necesita separar índices en (B) solo.

Para ayudar más, sólo un consejo, en el servidor SQL mediante el estudio de Gestión se puede evaluar la actuación de "Display plan de ejecución estimado". Se muestra cómo los indices y unirse a las obras.

También se puede utilizar el DTA (Base de Datos de la optimización de motor) para obtener más información y optimización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top