Isso é importante principalmente quando usado com índices compostos:
CREATE INDEX ix_index ON mytable (col1, col2 DESC);
pode ser usado para:
SELECT *
FROM mytable
ORDER BY
col1, col2 DESC
ou:
SELECT *
FROM mytable
ORDER BY
col1 DESC, col2
, mas não para:
SELECT *
FROM mytable
ORDER BY
col1, col2
Um índice em uma única coluna pode ser usado com eficiência na classificação dos dois modos.
Veja o artigo no meu blog para obter detalhes:
Atualizar:
De fato, isso pode importar mesmo para um índice de coluna única, embora não seja tão óbvio.
Imagine um índice em uma coluna de uma tabela em cluster:
CREATE TABLE mytable (
pk INT NOT NULL PRIMARY KEY,
col1 INT NOT NULL
)
CREATE INDEX ix_mytable_col1 ON mytable (col1)
O índice on col1mantém os valores ordenados col1junto com as referências às linhas.
Como a tabela está agrupada, as referências às linhas são, na verdade, os valores de pk. Eles também são ordenados dentro de cada valor de col1.
Isso significa que as folhas do índice são realmente ordenadas (col1, pk)e esta consulta:
SELECT col1, pk
FROM mytable
ORDER BY
col1, pk
não precisa de classificação.
Se criarmos o índice da seguinte maneira:
CREATE INDEX ix_mytable_col1_desc ON mytable (col1 DESC)
, os valores de col1serão classificados em ordem decrescente, mas os valores pkem cada valor de col1serão classificados em ordem crescente.
Isso significa que a seguinte consulta:
SELECT col1, pk
FROM mytable
ORDER BY
col1, pk DESC
pode ser servido por, ix_mytable_col1_descmas não por ix_mytable_col1.
Em outras palavras, as colunas que constituem um CLUSTERED INDEXem qualquer tabela são sempre as colunas finais de qualquer outro índice nessa tabela.