PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

कई PostgreSQL प्रश्नों को बेंचमार्क करना

एम्बेड करने में कोई समस्या नहीं है EXPLAIN पीएल/पीजीएसक्यूएल में:

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;$$;

उदाहरण के लिए आप इसका उपयोग इस प्रकार कर सकते हैं:

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

अविश्वसनीय प्रश्नों के साथ इसका उपयोग न करें, क्योंकि फ़ंक्शन 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. कैसे असिन () PostgreSQL में काम करता है

  2. पोस्टग्रेएसक्यूएल ऑटोइन्क्रिमेंट

  3. pyspark Hive SQL में पोस्टग्रेज कमांड 'nth_value' के बराबर कैसे प्राप्त करें?

  4. कैसे स्थापित करने के लिए libpq-fe.h?

  5. SQL:स्तंभ B के समान मानों को समूहित करें, फिर भी स्तंभ A द्वारा क्रमित करें