Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Voilà une table:
CREATE TABLE test(id SERIAL PRIMARY KEY, data JSONB);
Voici le contenu:
1 | {"parent": null, "children": [2, 3]}
2 | {"parent": 1, "children": [4, 5]}
3 | {"parent": 1, "children": []}
4 | {"parent": 2, "children": []}
5 | {"parent": 2, "children": []}
Je fais afficher l'explain plan pour la requête suivante:
postgres@postgres=# explain SELECT *
FROM test x1
LEFT JOIN test x2
ON x1.id = (x2.data->>'parent')::INT;
Hash Right Join (cost=38.58..83.50 rows=1270 width=72)
Hash Cond: (((x2.data ->> 'parent'::text))::integer = x1.id)
-> Seq Scan on test x2 (cost=0.00..22.70 rows=1270 width=36)
-> Hash (cost=22.70..22.70 rows=1270 width=36)
-> Seq Scan on test x1 (cost=0.00..22.70 rows=1270 width=36)
Je ne comprends pas pour quoi 1270 lignes ont été traitées?
Que veut dire width ici?
merci pour vos lumières.
Dernière modification par big1 (27/04/2018 17:14:12)
Hors ligne
Il s'agit d'un nombre estimé de ligne. Si vous n'avez pas effectué d'ANALYZE sur la table, postgres ne risque pas de faire une estimation correcte. Width correspond à la largeur moyenne d'une ligne (encore une fois, ANALYZE aide).
Je vous conseille de lire https://www.postgresql.org/docs/current … plain.html si vous voulez comprendre comment lire un plan d'exécution postgres.
Julien.
https://rjuju.github.io/
Hors ligne
Merci Julien.
Hors ligne
Pages : 1