PostgreSQL поиск недостающих индексов

Для анализа на недостающие индексы, в бд выполнить следующий запрос:

SELECT schemaname, relname, seq_scan-idx_scan AS too_much_seq, case when
seq_scan-idx_scan>0
THEN 'Missing Index?' ELSE 'OK' END, pg_relation_size(format('%I.%I',
schemaname, relname)::regclass) AS rel_size, seq_scan, idx_scan
FROM pg_stat_user_tables
WHERE pg_relation_size(format('%I.%I', schemaname,
relname)::regclass)>100000 ORDER BY too_much_seq DESC;

Скрипт проверяет таблицы на предмет многочисленных полных сканирований (ислючая небольшие таблицы, содержащие менее 100 тыс записей, т.к. даже при наличии индексов, планировщик запросов PostgreSQL предпочитает выполнять полное сканирование таблицы — на малых таблицах это быстрее поиска по индексу). В случае если полных сканирований значительно больше сканирваний — стоит проанализировать таблицу и запросы к ней на предмет недостающих индексов.

0

Добавить комментарий

Ваш e-mail не будет опубликован.