2009-05-18 21 views
6

El Asistente de optimización del motor de base de datos finalmente ha abandonado el fantasma y no puede ayudarme más, así que tengo que aprender un poco más sobre los índices (¿no deberían ser índices?).Índices de orden de clasificación descendentes

Creo que estoy más o menos allí. Sé cuándo usar índices compuestos, qué incluir con mis índices, la diferencia entre índices agrupados y no agrupados, etc.

Sin embargo ... Una cosa todavía me confunde. Al crear un índice, hay un orden de clasificación para el índice. Entiendo lo que esto significa, pero estoy luchando para pensar en un escenario en el que un índice de orden inverso pueda ser útil. Mi mejor opción es acelerar las consultas que recuperan las filas que se producen al final del índice ordenado hacia adelante, como las filas cronológicamente más recientes, pero francamente, estoy más o menos despistado.

¿Alguien puede aclararme?

+0

posible duplicado de [SQL Server índices - ascendente o descendente, ¿qué diferencia hace?] (Http://stackoverflow.com/questions/743858/sql-server-indexes-ascending-or-descending-what-difference -hacerlo-hacer) –

Respuesta

9

El orden de clasificación de un índice es importante solo para un índice de varias columnas. Para una sola columna, Sql Sever puede usar el índice en orden inverso, si quiere DESC donde el índice es ASC.

Para una búsqueda de múltiples columnas, la clasificación del índice sí importa. Digamos que tiene un índice en:

field1, field2 desc 

Esto sería útil para esta consulta:

select field1, field2 from table order by field1, field2 desc 

Y para esta consulta, donde el índice se puede utilizar a la inversa:

select field1, field2 from table order by field1 desc, field2 

Pero para esta consulta, el servidor Sql necesitaría una ordenación adicional en memoria:

select field1, field2 from table order by field1, field2 
0

Se ordena un índice descendiente cuando se está diseñando ese índice para una consulta que se ordenará de forma descendente.

1

Definir el orden correcto puede potencialmente eliminar la necesidad de una etapa de clasificación en el plan de consulta cuando se define un orden por en la instrucción SELECT.

Msdn article

0

Muchas veces hay un sesgo de los datos más recientes, por lo que si ordenar por "fecha de forma descendente", a optimizar para este caso de uso.

Supongo que tendría más sentido para las cosas que son numéricas en lugar de alfabético.

Cuestiones relacionadas