2011-05-25 1 views

Répondre

7

L'état où pourrait ne pas être affectée, mais la clause ORDER BY est certainement affectée

PostgreSQL Index Ordering Documentation

+0

Qu'est-ce qui relie les docs avec des versions encore inédits? –

+2

C'est le bit important: * Un cas particulier important est ORDER BY en combinaison avec LIMIT n: un tri explicite devra traiter toutes les données pour identifier les n premières lignes, mais s'il y a un index correspondant à ORDER BY, le les n premières lignes peuvent être récupérées directement, sans scanner le reste du tout. * – Mel

+0

@Milen A. Radev Merci de m'avoir fait remarquer, corrigé à point dans la version publiée. Je pense que Google a peut-être aussi répondu à la question sur l'OP. – Kallex

6

PostgreSQL (ou tout autre moteur de base de données, d'ailleurs) lira votre index d'une manière ou d'une autre. Vous obtiendrez une analyse d'index ou une analyse d'index inverse.

Le problème est lorsque vous avez un balayage multi-colonnes. Dans ce cas:

index on (foo, bar) 

travaillera pour foo asc, bar asc, ainsi que foo desc, bar desc. Sur certaines bases de données, cela ne fonctionnera pas sur foo desc, bar asc (analyse inverse foo, ignore la barre) ou foo asc, bar desc (analyse foo, ignore la barre).

0

Descendant peut vous donner un coup de pouce si la colonne (s) contiennent des données séquentiel qui est référencé par « récentes » valeurs - colonnes de date, des colonnes d'identité, etc. D'une manière générale

, les tables/index auraient être vraiment grand pour faire la différence, cependant.

Cela n'affectera pas ce qui est retourné, mais comment.

Questions connexes