Indices gruppiert ablegen

Hallo Leute,

macht es einen Unterschied in Sachen Performance des Index wenn ich mehrere Indices gruppiert ablege, also einem Indexnamen mehrere zu indizierende Spalten zuweise, oder die alle einzeln eintrage.
Weitere Vor- und Nachteile?

Danke im Voraus,
Christian

Wenn Deine Abfrage logisch so aufgebaut ist, daß ein Index über mehrere Spalten sinnvoll nutzbar ist, bringt das etwas. Allerdings ist seit 8.1 und der Verfügbarkeit von Bitmap Index Scan das nicht mehr so dolle, da auch Indexe auf einzelne Spalten mit dieser Methode sehr effektiv genutzt werden können.

Mehr sagt Dir explain analyse.


Andreas

Also wird der Index für eine “Kombination” aller zu indizierenden Spalten erzeugt und ist nicht gleichzusetzen mit dem indizieren einzelner Spalten. So richtig?
Ich hatte an die Verringerung von Tipparbeit bei dieser Funktion gedacht!

Christian

Ja, beim SELECT wird geschaut, ob die Kriterien mehrere Indexe sinnvoll kombiniert werden können.

schnelles Beispiel:

scholl=*# explain analyse select * from bde_meldungen where maschine=3700  and glas=29015;
                                                              QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on bde_meldungen  (cost=133.07..184.82 rows=13 width=180) (actual time=5.343..5.356 rows=3 loops=1)
   Recheck Cond: ((glas = 29015) AND (maschine = 3700))
   ->  BitmapAnd  (cost=133.07..133.07 rows=13 width=0) (actual time=5.314..5.314 rows=0 loops=1)
         ->  Bitmap Index Scan on idx_meldungen_glas  (cost=0.00..15.01 rows=2290 width=0) (actual time=0.220..0.220 rows=511 loops=1)
               Index Cond: (glas = 29015)
         ->  Bitmap Index Scan on idx_maschine  (cost=0.00..117.80 rows=15086 width=0) (actual time=4.985..4.985 rows=12671 loops=1)
               Index Cond: (maschine = 3700)
 Total runtime: 5.482 ms

Die Auswahlkriterien der 2 Indexe werden erst einmal im Speicher kombiniert (BitmapAnd). Als es noch kein BitmapIndex Scan gab, hätte er erst einmal die 511 und 12671 Zeilen geholt, so weiß er, daß er nur 3 holen braucht.

Ich hatte an die Verringerung von Tipparbeit bei dieser Funktion gedacht!

Christian

Ts ts ts, die Jugend von heute…


Andreas