Re : Quand des fichiers temporaires sont-ils nécessaires pour : ORDER BY
Posted in 1999
Translated from English by DrWatson — View original
J'ai le select suivant : > select col_char_11, col_date, col_decimal_11_0, col_char_3, >col_serial > from table > where col_char_11 = "01234567891" > and col_date between "01/01/1999" and "31/01/1999" > and col_decimal_11_0 > 0 > order by col1, col2, col3. > >J'ai 2 index sur la table : un index composite sur col_char_11, col_date, >col_decimal_11_0 et > un index unique sur col_serial > >Quand je consulte le fichier sqexplain.out, j'obtiens la sortie à laquelle on s'attendrait pour >la requête ci-dessus, c'est-à-dire... >Index utilisé. Coût estimé = 1. Nombre estimé de lignes retournées = 1, etc. >Tout cela est parfait. > >Quand je remplace le order by par order by col_serial >j'obtiens la même sortie, mais cette fois il indique >Temporary Files Required For: Order By > >Ma question est la suivante : >Pourquoi des fichiers temporaires sont-ils nécessaires lorsque je trie sur une colonne serial et non >lorsque je trie sur >les colonnes de l'index composite ? Probablement parce que la clause where du premier cas contient les mêmes colonnes que le order by. Ce qui pourrait être catastrophique, c'est que le second trie la table entière avant d'appliquer la clause where, ce qui pourrait rendre la requête beaucoup plus lente. En espérant que cela aide. -- « I'll Be Back » Obnoxio ************************************************ Sain d'esprit ? Bon sang, si j'étais sain d'esprit, qu'est-ce que je ferais ici ? Obtenez votre messagerie privée et gratuite sur http://www.hotmail.com