CREATE EXTENSION pg_stat_statements; SET pg_stat_statements.track_utility = FALSE; SET pg_stat_statements.track_planning = TRUE; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- -- simple and compound statements -- SELECT1AS"int";
-- LIMIT and OFFSET patterns -- Try some query permutations which once produced identical query IDs SELECT1AS"int"LIMIT1; SELECT1AS"int"LIMIT2; SELECT1AS"int" OFFSET 1; SELECT1AS"int" OFFSET 2; SELECT1AS"int" OFFSET 1LIMIT1; SELECT1AS"int" OFFSET 2LIMIT2; SELECT1AS"int"LIMIT1 OFFSET 1; SELECT1AS"int"LIMIT3 OFFSET 3; SELECT1AS"int" OFFSET 1FETCH FIRST 2 ROW ONLY; SELECT1AS"int" OFFSET 2FETCH FIRST 3 ROW ONLY;
-- DISTINCT and ORDER BY patterns -- Try some query permutations which once produced identical query IDs SELECTDISTINCT1AS"int"; SELECTDISTINCT2AS"int"; SELECT1AS"int"ORDERBY1; SELECT2AS"int"ORDERBY1;
/* this comment should not appear in the output */ SELECT'hello' -- but this one will appear AS"text";
-- normalization of constants and parameters, with constant locations -- recorded one or more times. SELECT pg_stat_statements_reset() ISNOTNULLAS t; SELECTWHERE'1'IN ('1'::int, '3'::int::text); SELECTWHERE (1, 2) IN ((1, 2), (2, 3)); SELECTWHERE (3, 4) IN ((5, 6), (8, 7)); SELECT query, calls FROM pg_stat_statements ORDERBY query COLLATE"C";
-- with the last element being an explicit function call with an argument, ensure -- the normalization of the squashing interval is correct. SELECT pg_stat_statements_reset() ISNOTNULLAS t; SELECT pg_stat_statements_reset() ISNOTNULLAS t; SELECTWHERE1IN (1, int4(1), int4(2)); SELECTWHERE1 = ANY (ARRAY[1, int4(1), int4(2)]); SELECT query, calls FROM pg_stat_statements ORDERBY query COLLATE"C";
-- -- queries with locking clauses -- CREATETABLE pgss_a (id integerPRIMARYKEY); CREATETABLE pgss_b (id integerPRIMARYKEY, a_id integerREFERENCES pgss_a);
SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- control query SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id;
-- test range tables SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORUPDATE; SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORUPDATE OF pgss_a; SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORUPDATE OF pgss_b; SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORUPDATE OF pgss_a, pgss_b; -- matches plain "FOR UPDATE" SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORUPDATE OF pgss_b, pgss_a;
-- test strengths SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR NO KEYUPDATE; SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR SHARE; SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORKEY SHARE;
-- test wait policies SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORUPDATE NOWAIT; SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FORUPDATE SKIP LOCKED;
SELECT calls, query FROM pg_stat_statements ORDERBY query COLLATE"C";
DROPTABLE pgss_a, pgss_b CASCADE;
-- -- access to pg_stat_statements_info view -- SELECT pg_stat_statements_reset() ISNOTNULLAS t; SELECT dealloc FROM pg_stat_statements_info;
SELECT * FROM tbl_inh; SELECT * FROM ONLY tbl_inh;
SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE'%FROM%tbl_inh%';
-- WITH TIES CREATETABLE limitoption ASSELECT0AS val FROM generate_series(1, 10); SELECT * FROM limitoption WHERE val < 2 ORDERBY val FETCH FIRST 2 ROWS WITH TIES;
SELECT * FROM limitoption WHERE val < 2 ORDERBY val FETCH FIRST 2 ROW ONLY;
SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE'%FETCH FIRST%';
-- GROUP BY, HAVING, GROUPING SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY a; SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY b; SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY a, b; SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY b, a; SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY GROUPING SETS(a, ()); SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY GROUPING SETS(b, ()); SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY a HAVING a = 1; SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY a HAVING a = 2; SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY b HAVING b = 1; SELECT GROUPING(a) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY a; SELECT GROUPING(b) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY b; SELECT GROUPING(b) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY a, b; SELECT GROUPING(b) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUPBY b, a; SELECT calls, query FROM pg_stat_statements WHERE query LIKE'%GROUP BY%'ORDERBY query COLLATE"C";
-- GROUP BY [DISTINCT] SELECT a, b, c FROM (VALUES (1, 2, 3), (4, NULL, 6), (7, 8, 9)) AS t (a, b, c) GROUPBY ROLLUP(a, b), rollup(a, c) ORDERBY a, b, c; SELECT a, b, c FROM (VALUES (1, 2, 3), (4, NULL, 6), (7, 8, 9)) AS t (a, b, c) GROUPBYDISTINCT ROLLUP(a, b), rollup(a, c) ORDERBY a, b, c;
SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE'%GROUP BY%ROLLUP%';
-- GROUPING SET agglevelsup SELECT ( SELECT ( SELECT GROUPING(a,b) FROM (VALUES (1)) v2(c)
) FROM (VALUES (1,2)) v1(a,b) GROUPBY (a,b)
) FROM (VALUES(6,7)) v3(e,f) GROUPBY ROLLUP(e,f); SELECT ( SELECT ( SELECT GROUPING(e,f) FROM (VALUES (1)) v2(c)
) FROM (VALUES (1,2)) v1(a,b) GROUPBY (a,b)
) FROM (VALUES(6,7)) v3(e,f) GROUPBY ROLLUP(e,f);
SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE'%SELECT GROUPING%'; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- Temporary table with same name, re-created.
BEGIN; CREATE TEMP TABLE temp_t (id int) ONCOMMITDROP; SELECT * FROM temp_t; COMMIT;
BEGIN; CREATE TEMP TABLE temp_t (id int) ONCOMMITDROP; SELECT * FROM temp_t; COMMIT; SELECT calls, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- search_path with various schemas and temporary tables CREATESCHEMA pgss_schema_1; CREATESCHEMA pgss_schema_2; -- Same attributes. CREATETABLE pgss_schema_1.tab_search_same (a int, b int); CREATETABLE pgss_schema_2.tab_search_same (a int, b int); CREATE TEMP TABLE tab_search_same (a int, b int); -- Different number of attributes, mapping types CREATETABLE pgss_schema_1.tab_search_diff_1 (a int); CREATETABLE pgss_schema_2.tab_search_diff_1 (a int, b int); CREATE TEMP TABLE tab_search_diff_1 (a int, b int, c int); -- Same number of attributes, different types CREATETABLE pgss_schema_1.tab_search_diff_2 (a int); CREATETABLE pgss_schema_2.tab_search_diff_2 (a text); CREATE TEMP TABLE tab_search_diff_2 (a bigint); -- First permanent schema SET search_path = 'pgss_schema_1'; SELECT count(*) FROM tab_search_same; SELECT a, b FROM tab_search_same; SELECT count(*) FROM tab_search_diff_1; SELECT count(*) FROM tab_search_diff_2; SELECT a FROM tab_search_diff_2 AS t1; SELECT a FROM tab_search_diff_2; SELECT a AS a1 FROM tab_search_diff_2; -- Second permanent schema SET search_path = 'pgss_schema_2'; SELECT count(*) FROM tab_search_same; SELECT a, b FROM tab_search_same; SELECT count(*) FROM tab_search_diff_1; SELECT count(*) FROM tab_search_diff_2; SELECT a FROM tab_search_diff_2 AS t1; SELECT a FROM tab_search_diff_2; SELECT a AS a1 FROM tab_search_diff_2; -- Temporary schema SET search_path = 'pg_temp'; SELECT count(*) FROM tab_search_same; SELECT a, b FROM tab_search_same; SELECT count(*) FROM tab_search_diff_1; SELECT count(*) FROM tab_search_diff_2; SELECT a FROM tab_search_diff_2 AS t1; SELECT a FROM tab_search_diff_2; SELECT a AS a1 FROM tab_search_diff_2;
RESET search_path; -- Schema qualifications SELECT count(*) FROM pgss_schema_1.tab_search_same; SELECT a, b FROM pgss_schema_1.tab_search_same; SELECT count(*) FROM pgss_schema_2.tab_search_diff_1; SELECT count(*) FROM pg_temp.tab_search_diff_2; SELECT a FROM pgss_schema_2.tab_search_diff_2 AS t1; SELECT a FROM pgss_schema_2.tab_search_diff_2; SELECT a AS a1 FROM pgss_schema_2.tab_search_diff_2; SELECT calls, query FROM pg_stat_statements ORDERBY query COLLATE"C"; DROPSCHEMA pgss_schema_1 CASCADE; DROPSCHEMA pgss_schema_2 CASCADE; DROPTABLE tab_search_same, tab_search_diff_1, tab_search_diff_2; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.