Postgresql
如何準確測量 PostgreSQL 中的查詢時間(因為 EXPLAIN ANALYZE 似乎沒有這樣做)?
我知道 EXPLAIN ANALYZE 返回查詢時間,但對於我的案例來說似乎沒有這樣做。(除非我遺漏了什麼……它會是什麼……?)
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;
解釋分析輸出:
Planning time: 1.300 ms Execution time: 105.936 ms
使用 \timing 選擇輸出:
Time: 2100.704 ms (00:02.101)
EXPLAIN ANALYZE 似乎不包括讀取數據的時間。
如何在不使用 SQL(而不是 PSQL 控制台)的情況下獲得總時間?
PostgreSQL 9.6.6
從
a_horse_with_no_name
評論中,解釋(分析)報告的時間確實不包括將數據發送到SQL客戶端所花費的時間。這是伺服器需要完全準備結果以便將其發送給驅動程序的時間。由於此後的任何延遲完全取決於 SQL 客戶端和客戶端與伺服器之間的網路的組合,因此無法解釋說明
這就是它的全部。其中一個是伺服器端,另一個是網路端。
如果要包括網路和客戶端時間,則在客戶端中啟動和停止計時器;不管是什麼客戶。