Je sais que Expliquer Analyser retourne la durée de la requête, mais elle ne semble pas le faire pour mon cas d'utilisation. (Sauf si je manque quelque chose ... que pourrait-il être ...?)
SELECT cars.*, users.*, makers.*, places.*
FROM cars
LEFT OUTER JOIN "users" ON "users"."id" = "cars"."user_id"
LEFT OUTER JOIN "makers" ON "makers"."id" = "cars"."company_id"
LEFT OUTER JOIN "places" ON "places"."id" = "cars"."location_id"
WHERE "cars"."deleted_at" IS NULL
AND "cars"."draft" = 'f'
AND ((cars.reference_number::text ILIKE '%abc123%')
OR (makers.name::text ILIKE '%abc123%')
OR (places.name::text ILIKE '%abc123%'))
ORDER BY cars.id DESC NULLS LAST
LIMIT 20
OFFSET 0;
Expliquez l'analyse d'analyse:
Planning time: 1.300 ms
Execution time: 105.936 ms
Sélectionnez Sortie à l'aide de\Timing:
Time: 2100.704 ms (00:02.101)
Il semble que Expliquer Analyze n'inclut pas le temps de lire les données.
Comment puis-je obtenir le temps total sans utiliser SQL (et pas la console PSQL)?
PostgreSQL 9.6.6
De a_horse_with_no_name
dans les commentaires,
Le temps rapporté par Explication (Analyser) n'inclut pas le temps nécessaire pour envoyer les données au client SQL. C'est le moment où le serveur doit préparer complètement le résultat de manière à pouvoir être envoyé au conducteur. Comme tout délai après cela est totalement à la combinaison du client SQL et du réseau entre client et serveur, il est impossible d'expliquer de montrer que
C'est à peu près tout ce qu'il y a aussi. L'un d'entre eux est le côté serveur, l'autre côté réseau.
Si vous souhaitez inclure le temps de réseau et du client, lancez et arrêtez votre minuterie dans le client; quel que soit le client qui pourrait être.