sql >> データベース >  >> RDS >> PostgreSQL

多くのPostgreSQLクエリのベンチマーク

    EXPLAINの埋め込みに問題はありません 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;$$;
    

    たとえば、次のように使用できます。

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

    関数はSQLインジェクションに対して脆弱であるため、信頼できないクエリでは使用しないでください。




    1. PostgreSQL:psqlコマンドラインユーティリティを使用する場合のWindowsでのエンコーディングの問題

    2. Pythonを使用してtxtファイルからmySQLへの大きなデータセットの挿入を高速化

    3. プリペアドステートメント(PostgreSQL)でDDLコマンドを使用できますか?

    4. データベース内のレコードのグループに並べ替え順序を格納するための最も効率的な方法は何ですか?