Aktionen
Unterstützung #108
offenUngenutzte Indexe ausmisten
Status:
Neu
Priorität:
Niedrig
Zugewiesen an:
-
Zielversion:
-
Beginn:
19.11.2015
Abgabedatum:
% erledigt:
0%
Geschätzter Aufwand:
Beschreibung
In 34ea9b39f4 habe ich schon ein paar doppelte Indexe rausgeschmissen, weil es in den Tabellen mittlerweile einen Primary Key gibt, und die händisch gesetzten deshalb nicht mehr nötig waren. Es gibt aber sicherlich noch mehr, was man aufräumen könnte. Z.B. gibt es einen Index auf lower(source) in acc_trans, der nur greift, wenn man in einer Abfrage nach einem eindeutigen source sucht, z.B.:
select * from acc_trans where lower(source) = 'Rechnung 55506505';
Sobald man in der Abfrage das lower wegläßt, oder ein like benutzt, ist der Index schon nutzlos. Ich konnte keine aktuelle Codestelle finden, wo das so benutzt wird, das stammt vermutlich also noch aus alten Zeiten. In den Datenbanken, wo ich nachgeschaut habe, ist das sogar der größte Index, bei einem Mandanten knapp 3MB groß, und wurde noch nie benutzt. Ich würde den Index also gerne entfernen, und nehme gerne Vorschläge entgegen, was noch entfernt werden könnte/sollte.
Hier kann man sich die aktuell unbenutzten Indexe und deren Größe anschauen:
SELECT relid::regclass AS table, indexrelid::regclass AS index, pg_size_pretty(pg_relation_size(indexrelid::regclass)) AS index_size, idx_tup_read, idx_tup_fetch, idx_scan FROM pg_stat_user_indexes JOIN pg_index USING (indexrelid) WHERE idx_scan = 0 AND indisunique IS FALSE;
Aktionen