Plan d’ex´ecution de requˆetes
Wies law Zielonka
23 novembre 2013
Pour obtenir le plan de l’ex´ecution d’une requˆete :
EXPLAIN [ANALYZE] requ^ete
EXPLAIN seul : juste estimation de temps, la requˆete ne sera pas
ex´ecut´ee.
Si EXPLAIN ANALYZE alors la requˆete sera ex´ecut´ee et on obtient
le temps eel d’ex´ecution. Mais l’ex´ecution est peut-ˆetre ind´esirable
pour INSERT DELETE UPDATE.
Pour annuler les effets d’une telle requˆete faire :
BEGIN;
EXPLAIN ANALYZE ... ;
ROLLBACK;
scan d’une table
L’op´eration de base c’est le scan (parcours) d’une table.
Dans les exemples j’utilise la table suivante :
c r e a t e t a b l e t e s t ( a i nt , b i nt , c i n t ) ;
c r e a t e i n d e x i n d a on t e s t u s i n g b t r e e ( a ) ;
c r e a t e i n d e x ind b on t e s t u s i n g h as h ( b ) ;
i n s e r t i n t o t e s t
v a l u e s ( 1 , 1 , 1 ) , ( 2 , 2 , 2 ) , ( 3 , 3 , 3 ) , ( 4 , 4 , 4 ) ,
( 5 , 5 , 5 ) ;
Scan s´equentiel - sequential scan
e x p l a i n a n a l y z e s e l e c t from t e s t where a <> 4 ;
Seq Scan on t e s t ( c o s t = 0 . 0 0 . . 3 4 . 2 5 rows =1930 w idth
( a c t u a l t ime = 0 .0 38 .. 0 .0 4 9 rows=4 l o o p
F i l t e r : ( a <> 4)
T o t a l r u n t i m e : 0 . 1 1 5 ms
(3 rows )
Sequential scan
Indexe n’est pas utilis´e. On parcourt tous les enregistrements de la
table bloc par bloc.
Exemple. La table Tposs`ede l’attribut X. On ex´ecute la requˆete
select * from T where X = 4;
La table poss`ede 100 enregistrements rang´e dans 5 blocs (dans 5
pages m´emoire), chaque bloc contient 20 enregistrements. Il y a 4
enregistrements qui satisfont la condition X= 4, 2 dans le bloc 2
et 2 dans le bloc 4.
Sequential scan lira tous les blocs un par un pour retrouver les 4
enregistrements dans l’ordre dans lequel les blocs sont rang´es sur le
disque. Donc on lit s´equentiellement tous les blocs qui contiennent
T.
1 / 39 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !