PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Đo điểm chuẩn cho nhiều truy vấn PostgreSQL

Không có vấn đề gì với việc nhúng EXPLAIN trong PL / pgSQL:

CREATE OR REPLACE FUNCTION profile(
      IN query text,
      OUT total_cost double precision,
      OUT runtime double precision
   ) RETURNS record
  LANGUAGE plpgsql STRICT AS
$$DECLARE
   j json;
BEGIN
   EXECUTE 'EXPLAIN (ANALYZE, FORMAT JSON) ' || query INTO j;
   total_cost := (j->0->'Plan'->>'Total Cost')::double precision;
   runtime := (j->0->'Plan'->>'Actual Total Time')::double precision;
   RETURN;
END;$$;

Bạn có thể sử dụng nó ví dụ như sau:

test=> SELECT * FROM profile($$SELECT * FROM large WHERE val = 'mama'$$);
┌────────────┬─────────┐
│ total_cost │ runtime │
├────────────┼─────────┤
│   14542.43 │ 207.836 │
└────────────┴─────────┘
(1 row)

Không sử dụng nó với các truy vấn không đáng tin cậy, vì hàm này dễ bị chèn SQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng chữ cái với một số lượng lớn hoặc không xác định các danh mục

  2. PostgreSQL đang trỗi dậy:Phát hiện Postgres 2018 &Xu hướng 2019

  3. Postgres thiếu lỗi nhập mệnh đề FROM trên truy vấn với mệnh đề WITH

  4. lưu trữ kết quả postgresql trong biến bash

  5. Cột chức năng cửa sổ Postgres với Rails