PgHero

Queries

Total Time Average Time Calls
0 min 23% 0 ms 2,111 postgres
INSERT INTO logs (id, workspace_id, user_id, store_id, app_id, action, old_values, new_values, error_message, resource_id, resource_type, status, created_time) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
0 min 22% 35 ms 17 postgres
SELECT * FROM logs ORDER BY created_time DESC LIMIT $1 OFFSET $2
Details
CREATE INDEX CONCURRENTLY ON logs (created_time)
Rows: 8400
Row progression: 8400, 1

Row estimates
- created_time (sort): 1

Existing indexes
- id PRIMARY
0 min 13% 2 ms 192 postgres
SELECT schemaname AS schema, t.relname AS table, ix.relname AS name, regexp_replace(pg_get_indexdef(i.indexrelid), $1, $2) AS columns, regexp_replace(pg_get_indexdef(i.indexrelid), $3, $4) AS using, indisunique AS unique, indisprimary AS primary, indisvalid AS valid, indexprs::text, indpred::text, pg_get_indexdef(i.indexrelid) AS definition FROM pg_index i INNER JOIN pg_class t ON t.oid = i.indrelid INNER JOIN pg_class ix ON ix.oid = i.indexrelid LEFT JOIN pg_stat_user_indexes ui ON ui.indexrelid = i.indexrelid WHERE schemaname IS NOT NULL ORDER BY 1, 2 /*pghero*/
0 min 13% 168 ms 2 postgres
SELECT * FROM logs WHERE app_id = $1 ORDER BY created_time DESC LIMIT $2 OFFSET $3
Details
CREATE INDEX CONCURRENTLY ON logs (app_id, created_time)
Rows: 8400
Row progression: 8400, 336, 0

Row estimates
- app_id (=): 336
- created_time (sort): 1

Existing indexes
- id PRIMARY
0 min 6% 1 ms 281 postgres
SELECT t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype
FROM pg_type as t
LEFT JOIN pg_range as r ON oid = rngtypid
WHERE
  t.typname IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40)
0 min 3% 0 ms 190 postgres
WITH query_stats AS ( SELECT LEFT(query, $1) AS query, queryid AS query_hash, rolname AS user, ((total_plan_time + total_exec_time) / $2 / $3) AS total_minutes, ((total_plan_time + total_exec_time) / calls) AS average_time, calls FROM pg_stat_statements INNER JOIN pg_database ON pg_database.oid = pg_stat_statements.dbid INNER JOIN pg_roles ON pg_roles.oid = pg_stat_statements.userid WHERE calls > $4 AND pg_database.datname = current_database() ) SELECT query, query AS explainable_query, query_hash, query_stats.user, total_minutes, average_time, calls, total_minutes * $5 / (SELECT SUM(total_minutes) FROM query_stats) AS total_percent, (SELECT SUM(total_minutes) FROM query_stats) AS all_queries_total_minutes FROM query_stats ORDER BY "total_minutes" DESC LIMIT $6 /*pghero*/
0 min 3% 0 ms 186 postgres
SELECT n.nspname AS table_schema, c.relname AS table, attname AS column, format_type(a.atttypid, a.atttypmod) AS column_type, pg_get_expr(d.adbin, d.adrelid) AS default_value FROM pg_catalog.pg_attribute a INNER JOIN pg_catalog.pg_class c ON c.oid = a.attrelid INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace INNER JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum) = (d.adrelid, d.adnum) WHERE NOT a.attisdropped AND a.attnum > $1 AND pg_get_expr(d.adbin, d.adrelid) LIKE $2 AND n.nspname NOT LIKE $3 /*pghero*/
0 min 3% 0 ms 2,976 postgres
SELECT username, email, name, about, headline, phone, avatar, password, status, created_time, updated_time from users where id = $1
0 min 2% 0 ms 281 postgres
SELECT t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype
FROM pg_type as t
LEFT JOIN pg_range as r ON oid = rngtypid
WHERE
  t.typtype IN ($1, $2, $3)
0 min 2% 0 ms 281 postgres
SELECT t.oid, t.typname, t.typelem, t.typdelim, t.typinput, r.rngsubtype, t.typtype, t.typbasetype
FROM pg_type as t
LEFT JOIN pg_range as r ON oid = rngtypid
WHERE
  t.typelem IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49)
0 min 2% 0 ms 281 postgres
SET SESSION timezone TO 'UTC'
0 min 2% 0 ms 186 postgres
SELECT n.nspname AS schema, c.relname AS table, $1 - GREATEST(AGE(c.relfrozenxid), AGE(t.relfrozenxid)) AS transactions_left FROM pg_class c INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_class t ON c.reltoastrelid = t.oid WHERE c.relkind = $2 AND ($3 - GREATEST(AGE(c.relfrozenxid), AGE(t.relfrozenxid))) < $4 ORDER BY 3, 1, 2 /*pghero*/
0 min 1.0% 0 ms 186 postgres
SELECT pid, state, application_name AS source, age(NOW(), COALESCE(query_start, xact_start)) AS duration, (wait_event IS NOT NULL) AS waiting, query, COALESCE(query_start, xact_start) AS started_at, EXTRACT($1 FROM NOW() - COALESCE(query_start, xact_start)) * $2 AS duration_ms, usename AS user, backend_type FROM pg_stat_activity WHERE state <> $3 AND pid <> pg_backend_pid() AND datname = current_database() AND NOW() - COALESCE(query_start, xact_start) > interval $4 AND query <> $5 ORDER BY COALESCE(query_start, xact_start) DESC /*pghero*/
0 min 0.9% 1 ms 17 postgres
SELECT COUNT($1) FROM logs
0 min 0.6% 0 ms 281 postgres
SELECT t.oid, t.typname
FROM pg_type as t
WHERE t.typname IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
0 min 0.6% 0 ms 186 postgres
SELECT state, COUNT(*) AS connections FROM pg_stat_activity GROUP BY 1 ORDER BY 2 DESC, 1 /*pghero*/
0 min 0.5% 0 ms 186 postgres
SELECT n.nspname AS schema, c.relname AS sequence, has_sequence_privilege(c.oid, $1) AS readable FROM pg_class c INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind = $2 AND n.nspname NOT IN ($3, $4) /*pghero*/
0 min 0.3% 2 ms 5 postgres
SELECT pg_database_size(current_database()) /*pghero*/
0 min 0.3% 1 ms 5 postgres
SELECT n.nspname AS schema, c.relname AS relation, CASE c.relkind WHEN $1 THEN $2 WHEN $3 then $4 ELSE $5 END AS type, pg_table_size(c.oid) AS size_bytes FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname NOT IN ($6, $7) AND n.nspname !~ $8 AND c.relkind IN ($9, $10, $11) ORDER BY pg_table_size(c.oid) DESC, 2 ASC /*pghero*/
0 min 0.2% 0 ms 186 postgres
SELECT nsp.nspname AS schema, rel.relname AS table, con.conname AS name, fnsp.nspname AS referenced_schema, frel.relname AS referenced_table FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid LEFT JOIN pg_catalog.pg_class frel ON frel.oid = con.confrelid LEFT JOIN pg_catalog.pg_namespace nsp ON nsp.oid = con.connamespace LEFT JOIN pg_catalog.pg_namespace fnsp ON fnsp.oid = frel.relnamespace WHERE con.convalidated = $1 /*pghero*/
0 min 0.2% 0 ms 176 postgres
SELECT id, username, email, name, about, headline, phone, avatar, password, status, created_time, updated_time from users where email = $1
0 min 0.2% 2 ms 2 postgres
SELECT COUNT($2) FROM logs WHERE app_id = $1
Details
CREATE INDEX CONCURRENTLY ON logs (app_id)
Rows: 8400
Row progression: 8400, 336

Row estimates
- app_id (=): 336

Existing indexes
- id PRIMARY
0 min 0.2% 1 ms 5 postgres
INSERT INTO users (id, username, email, name, about, headline, phone, avatar, password, status, created_time, updated_time) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
0 min 0.1% 0 ms 34 postgres
SELECT id, username, email, name, about, headline, phone, avatar, password, status, users.created_time, users.updated_time FROM users ORDER BY users.created_time DESC LIMIT $1 OFFSET $2
0 min 0.1% 1 ms 5 postgres
INSERT INTO user_workspace (user_id, workspace_id, is_active, created_time, updated_time) values ($1, $2, $3, $4, $5)
0 min 0.1% 0 ms 370 postgres
SELECT username FROM users WHERE id = $1
0 min 0.1% 0 ms 396 postgres
SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relname = $2 AND c.relkind IN ($3,$4)
0 min < 0.1% 0 ms 281 postgres
SET client_min_messages TO 'warning'
0 min < 0.1% 1 ms 5 postgres
UPDATE users SET status = $1, updated_time = $2 where id = $3
0 min < 0.1% 0 ms 186 postgres
SELECT slot_name, database, active FROM pg_replication_slots /*pghero*/
0 min < 0.1% 0 ms 5 postgres
SELECT nspname AS schema, relname AS table, reltuples::bigint AS estimated_rows, pg_total_relation_size(pg_class.oid) AS size_bytes FROM pg_class INNER JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE relkind = $1 AND nspname = $2 AND relname IN ($3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) ORDER BY 1, 2 /*pghero*/
0 min < 0.1% 0 ms 228 postgres
SELECT id, workspace_id, name, description, avatar, created_time, updated_time from groups where id IN (SELECT group_id FROM users_group WHERE user_id = $1)
0 min < 0.1% 0 ms 5 postgres
SELECT schemaname AS schema, tablename AS table, attname AS column, null_frac, n_distinct FROM pg_stats WHERE schemaname = $1 AND tablename IN ($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) ORDER BY 1, 2, 3 /*pghero*/
0 min < 0.1% 0 ms 3 postgres
SELECT * FROM pg_stat_statements LIMIT $1 /*pghero*/
0 min < 0.1% 1 ms 1 postgres
SELECT nspname AS schema, relname AS table, reltuples::bigint AS estimated_rows, pg_total_relation_size(pg_class.oid) AS size_bytes FROM pg_class INNER JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE relkind = $1 AND nspname = $2 AND relname IN ($3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13) ORDER BY 1, 2 /*pghero*/
0 min < 0.1% 0 ms 5 postgres
SELECT schemaname AS schema, relname AS table, last_vacuum, last_autovacuum, last_analyze, last_autoanalyze, n_dead_tup AS dead_rows, n_live_tup AS live_rows FROM pg_stat_user_tables ORDER BY 1, 2 /*pghero*/
0 min < 0.1% 0 ms 3 postgres
SELECT name from public.versions
0 min < 0.1% 0 ms 5 postgres
SELECT schemaname AS schema, relname AS table, indexrelname AS index, pg_relation_size(i.indexrelid) AS size_bytes, idx_scan as index_scans FROM pg_stat_user_indexes ui INNER JOIN pg_index i ON ui.indexrelid = i.indexrelid WHERE NOT indisunique AND idx_scan <= $1 ORDER BY pg_relation_size(i.indexrelid) DESC, relname ASC /*pghero*/
0 min < 0.1% 0 ms 281 postgres
SET standard_conforming_strings = on
0 min < 0.1% 1 ms 1 postgres
SELECT schemaname AS schema, tablename AS table, attname AS column, null_frac, n_distinct FROM pg_stats WHERE schemaname = $1 AND tablename IN ($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) ORDER BY 1, 2, 3 /*pghero*/
0 min < 0.1% 0 ms 4 postgres
SELECT pg_stat_activity.pid, datname AS database, usename AS user, application_name AS source, client_addr AS ip, state, ssl FROM pg_stat_activity LEFT JOIN pg_stat_ssl ON pg_stat_activity.pid = pg_stat_ssl.pid ORDER BY pg_stat_activity.pid /*pghero*/
0 min < 0.1% 0 ms 281 postgres
SET intervalstyle = iso_8601
0 min < 0.1% 1 ms 1 postgres
WITH query_stats AS ( SELECT LEFT(query, $1) AS query, queryid AS query_hash, rolname AS user, ((total_plan_time + total_exec_time) / $2 / $3) AS total_minutes, ((total_plan_time + total_exec_time) / calls) AS average_time, calls FROM pg_stat_statements INNER JOIN pg_database ON pg_database.oid = pg_stat_statements.dbid INNER JOIN pg_roles ON pg_roles.oid = pg_stat_statements.userid WHERE calls > $4 AND pg_database.datname = current_database() ) SELECT query, query AS explainable_query, query_hash, query_stats.user, total_minutes, average_time, calls, total_minutes * $5 / (SELECT SUM(total_minutes) FROM query_stats) AS total_percent, (SELECT SUM(total_minutes) FROM query_stats) AS all_queries_total_minutes FROM query_stats ORDER BY "calls" DESC LIMIT $6 /*pghero*/
0 min < 0.1% 0 ms 5 postgres
SELECT pid, state, application_name AS source, age(NOW(), COALESCE(query_start, xact_start)) AS duration, (wait_event IS NOT NULL) AS waiting, query, COALESCE(query_start, xact_start) AS started_at, EXTRACT($1 FROM NOW() - COALESCE(query_start, xact_start)) * $2 AS duration_ms, usename AS user, backend_type FROM pg_stat_activity WHERE state <> $3 AND pid <> pg_backend_pid() AND datname = current_database() ORDER BY COALESCE(query_start, xact_start) DESC /*pghero*/
0 min < 0.1% 0 ms 34 postgres
SELECT COUNT($1) FROM users
0 min < 0.1% 0 ms 1 postgres
WITH query_stats AS ( SELECT LEFT(query, $1) AS query, queryid AS query_hash, rolname AS user, ((total_plan_time + total_exec_time) / $2 / $3) AS total_minutes, ((total_plan_time + total_exec_time) / calls) AS average_time, calls FROM pg_stat_statements INNER JOIN pg_database ON pg_database.oid = pg_stat_statements.dbid INNER JOIN pg_roles ON pg_roles.oid = pg_stat_statements.userid WHERE calls > $4 AND pg_database.datname = current_database() ) SELECT query, query AS explainable_query, query_hash, query_stats.user, total_minutes, average_time, calls, total_minutes * $5 / (SELECT SUM(total_minutes) FROM query_stats) AS total_percent, (SELECT SUM(total_minutes) FROM query_stats) AS all_queries_total_minutes FROM query_stats ORDER BY "average_time" DESC LIMIT $6 /*pghero*/
0 min < 0.1% 0 ms 5 postgres
SELECT state FROM pg_stat_replication /*pghero*/
0 min < 0.1% 0 ms 5 postgres
SELECT pid, phase FROM pg_stat_progress_vacuum WHERE datname = current_database() /*pghero*/
0 min < 0.1% 0 ms 9 postgres
SELECT id, username, email, name, about, headline, phone, avatar, password, status, created_time, updated_time from users where username = $1
0 min < 0.1% 0 ms 11 postgres
SELECT id, workspace_id, name, description, avatar, created_time, updated_time from groups
0 min < 0.1% 0 ms 6 postgres
SHOW max_connections /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW checkpoint_completion_target /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW default_statistics_target /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW shared_buffers /*pghero*/
0 min < 0.1% 0 ms 3 postgres
SELECT pg_is_in_recovery() /*pghero*/
0 min < 0.1% 0 ms 3 postgres
SHOW server_version_num /*pghero*/
0 min < 0.1% 0 ms 3 postgres
SHOW server_version /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW random_page_cost /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW effective_cache_size /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW max_wal_size /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW maintenance_work_mem /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW work_mem /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW effective_io_concurrency /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW min_wal_size /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW huge_pages /*pghero*/
0 min < 0.1% 0 ms 6 postgres
SHOW wal_buffers /*pghero*/