Fehlenden Index finden

From: Thomas Guettler <hv(at)tbz-pariv(dot)de>
To: PGSQL Allgemein <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Fehlenden Index finden
Date: 2011-01-11 11:25:32
Message-ID: 4D2C3E2C.5010305@tbz-pariv.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hallo,

ich bin auf der Suche nach Tabellen, die keinen Index haben.

Dafür habe ich mir folgendes Statement erstellt:

select
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(relname) as rel_size, seq_scan, idx_scan from pg_stat_all_tables
where schemaname='public' and pg_relation_size(relname)>40000
order by too_much_seq desc;

relname | too_much_seq | case | rel_size | seq_scan | idx_scan
------------------------------------+--------------+----------------+-----------+----------+----------
modwork_belegart | 29879747 | Missing Index? | 49152 | 31255169 | 1375422
modwork_emailweiterleitungsadresse | 1395 | Missing Index? | 49152 | 1560 | 165
django_admin_log | 327 | Missing Index? | 114688 | 708 | 381
modwork_notizen_notiz | -138 | OK | 188416 | 876 | 1014
modwork_rdiforms_onlineformular | -1837 | OK | 40960 | 7574 | 9411
modwork_notizen_vertrag | -5366 | OK | 753664 | 1461 | 6827

Bei kleinen Tabellen wird der Index nicht verwendet. Ist modwork_belegart mit 49152 so eine Tabelle?

Wie könnte ich die Stelle in meinem Code finden, die bei dieser Tabelle ein seq. Scan macht? Gibt
es die Möglichkeit, das Postgres die Anfrage abbricht, sobald auf einer bestimmten Tabelle
ein seq. Scan durchgeführt wird?

Das Statement ist von hier inspiriert:
http://www.postgresonline.com/journal/index.php?/archives/65-How-to-determine-which-tables-are-missing-indexes.html

Gruß,
Thomas

--
Thomas Guettler, http://www.thomas-guettler.de/
E-Mail: guettli (*) thomas-guettler + de

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Kretschmer 2011-01-11 13:36:48 Re: Fehlenden Index finden
Previous Message Andreas 'ads' Scherbaum 2011-01-10 21:23:52 == Wöchentlicher PostgreSQL Newsletter - 09. Januar 2011 ==