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.
Bitmap Index 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 OR b=3 AND c =3;
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Bitmap Heap Scan on t e s t
( c o s t = 8 . 6 6 . . 1 8 . 9 9 rows =10 w idt
Rech eck Cond : ( ( a = 4) OR ( b = 3 ) )
F i l t e r : ( ( a = 4) OR ( ( b = 3) AND ( c = 3 ) ) )
−>BitmapOr
( c o s t = 8 . 6 6 . . 8 . 6 6 rows =19 w id th
−>Bitmap I n d e x Scan on i n d a
( c o s t = 0 . 0 0 . . 4 . 3 3 rows =10 w id th
I n d e x Cond : ( a = 4)
−>Bitmap I n d e x Scan on i n db
( c o s t = 0 . 0 0 . . 4 . 3 3 rows =10 w id th
I n d e x Cond : ( b = 3)
T o t a l r u n t i m e : 0 . 1 78 ms
(9 rows )
Index Scan
Dans l’exemple suivant Postgres a choisi d’utiliser Bitmap Index
Scan. La directive suivante invalide l’utilisation de Bitmap Index
Scan.
set enable_bitmapscan=off;
Et dans ce cas Posgres utilise Index 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 >2 ;
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
I n d e x Scan u s i n g i n d a on t e s t
( c o s t = 0 . 0 0 . . 5 5 . 5 7 rows =647 wi dt h =12)
( a c t u a l ti me = 0 .0 3 8 . .0 . 0 5 0 rows=3 l o o p s =1)
I n d e x Cond : ( a >2)
T o t a l r u n t i m e : 0 . 1 07 ms
(3 rows )
Bitmap Index Scan versus Index scan
Quelle diff´erence entre Bitmap Index Scan et Index Scan ?
Les deux types de parcours utilise l’index mais les deux types de
scan cherchent les donn´ees sur le disque dur aux moment diff´erent.