PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Membandingkan banyak kueri PostgreSQL

Tidak ada masalah dengan menyematkan EXPLAIN di 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;$$;

Anda dapat menggunakannya misalnya sebagai berikut:

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

Jangan gunakan dengan kueri yang tidak tepercaya, karena fungsinya rentan terhadap injeksi 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. Psql COPY dengan kendala gagal

  2. Konfigurasikan koneksi jarak jauh RubyMine ke Heroku PostgreSQL

  3. Bagaimana cara mengatur PostgreSQL untuk Play 2.0?

  4. Daftar jumlah nilai duplikat

  5. Bisakah Anda membuat urutan pada kolom yang sudah ada di Postgres