Re : L'optimiseur ?
Posted in 1999
Translated from English by DrWatson — View original
De : "Pons Roca, Isidre" <ipons@dtgna.altanet.org> > >Voici une situation très curieuse : > > prenez une table > > table_a ( > column_1 char(3) not null, > column_2 char(2) not null, > column_3 smallint not null, > column_4 integer, > ... > colum_n smallint, > primary key (column_1,column_2,column_3)) > > Insérez dans cette table 5 500 000 enregistrements (ou plus ;-DDDD) > > exécutez l'instruction sql suivante : > > select * > from table_a > where column_2 = "xx" and > column_2 = "yy" > > ***** Ce select est erroné car une colonne ne peut avoir qu'une >seule valeur dans un enregistrement. > > Le temps nécessaire pour afficher « No records found » a été de 30 minutes avec >énormément de lectures. > > Remplacez maintenant column_2 par column_1 dans la clause where > (where column_1 = "xxx" and column_1 = "yyy") > > Le temps nécessaire avec ce select = 0,00000001 milliseconde >et 3 lectures pour afficher « No records found ». > >Pourquoi l'optimiseur n'optimise-t-il pas le premier select ? Parce qu'elle n'est pas indexée. >Pourquoi l'optimiseur optimise-t-il le second select (parce que column_1 >est le premier élément d'un index ?) ? Exactement. Avez-vous exécuté UPDATE STATISTICS ? ______________________________________________________ Obtenez votre messagerie privée et gratuite sur http://www.hotmail.com