[PostgreSQL] Jointures et Indexes

Jointures et Indexes [PostgreSQL] - SQL/NoSQL - Programmation

Marsh Posté le 20-10-2006 à 14:56:13    

Bonjour !
Alors voila un problème très simple a présenter mais que je ne comprends absolument pas.
Sur une base de données PostgreSQL (8.1.3) vierge je crée deux tables :

Code :
  1. CREATE TABLE A
  2. (
  3.    id int,
  4.    nom varchar(200),
  5.    primary key(id)
  6. );
  7. CREATE TABLE B
  8. (
  9.    id int,
  10.    nom varchar(200),
  11.    a int,
  12.    FOREIGN KEY(a) REFERENCES A ON DELETE SET NULL,
  13.    PRIMARY KEY(id)
  14. );
  15. CREATE INDEX b_a_INDEX on B(a);


 
Puis j'ajoute quelques valeurs :

Code :
  1. insert into A (id, nom) VALUES (1, 'A1');
  2. insert into A (id, nom) VALUES (2, 'A2');
  3. insert into B (id, nom, a) VALUES (1, 'B1', 1);
  4. insert into B (id, nom, a) VALUES (2, 'B2', 2);
  5. insert into B (id, nom, a) VALUES (3, 'B3', NULL);


 
Et finalement j'execute une requête avec EXPLAIN car c'est justement de l'utilisation des indexes que vient mon problème.

Code :
  1. EXPLAIN SELECT
  2. A.nom, B.nom
  3. FROM A INNER JOIN B ON B.a = A.id


 
J'obtiens :

Code :
  1. Hash Join  (cost=16.50..39.47 rows=510 width=236)
  2.   Hash Cond: ("outer".a = "inner".id)
  3.   ->  Seq Scan on b  (cost=0.00..15.10 rows=510 width=122)
  4.   ->  Hash  (cost=15.20..15.20 rows=520 width=122)
  5.         ->  Seq Scan on a  (cost=0.00..15.20 rows=520 width=122)


 
Comme on peut le voir il fait deux "Seq Scan" ce qui à mon avis n'est pas normal à cause des indexes.
 
Quelqu'un aurait une explication ? ... Peut être que la réponse est RTFM! :)
 
Merci d'avance !


Message édité par Ummon le 20-10-2006 à 15:20:04
Reply

Marsh Posté le 20-10-2006 à 14:56:13   

Reply

Marsh Posté le 23-10-2006 à 22:54:06    

Personne pour m'aider ? http://www.euphorik.ch/boardel/smiles/sisicaivrai.gif

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed