Postgresql Duplicate İndex Tespiti
Postgresql duplicate index kavramından önce postgreSQL de index nedir ne için kullanılır ve çeşitleri nelerdir ve bu çeşitleri ile ilgili bilgileri diğer yazılarımda paylaşmıştım bu yazılarımı okumanızı tavsiye ederim. Bu yazımda postgresql de aynı kolonlara ait oluşturulan indexleri tespit etmek ve bunların önüne geçerek hem sorgu performansı ve hem de gereksiz disk alanın önüne geçebiliriz.
SELECT pg_size_pretty(sum(pg_relation_size(idx))::bigint) as indexsize,
(array_agg(idx))[1] as index1name, (array_agg(idx))[2] as index2name,
(array_agg(idx))[3] as index3name, (array_agg(idx))[4] as index4name
FROM (
SELECT indexrelid::regclass as idx, (indrelid::text ||E'\n'|| indclass::text ||E'\n'|| indkey::text ||E'\n'||
coalesce(indexprs::text,'')||E'\n' || coalesce(indpred::text,'')) as key
FROM PG_INDEX) sub
GROUP BY key HAVING count(*)>1
ORDER BY sum(pg_relation_size(idx)) DESC;