yo,
Und ausser-ausserdem, was hilft _dir_ der grössenoptimierte Index, wenn das Datenbanksystem dann sagt: Was will ich denn damit, da kann ich auch gleich einen Tablescan machen? sprich, ihn nicht benutzt ...
Unter welchen Umständen passiert sowas?
zum beispiel wenn die ergebnismenge 10% der gesamtgröße der tabelle übersteigt oder aber je nachdem, wie die kardinalität der datenbank beschaffen ist, sprich gleichen sich viele werte in der entsprechen tabelle oder nicht. ein b-tree index hätte zum beispiel damit probleme, wenn viele werte sich gar nicht unterscheiden.
Die DB enthält Ortsnamen aus aller Welt: ich gehe also davon aus, dass bei den ersten Zeichen eine maximale Streuung vorliegt. Da aber natürlich die meisten Namen nicht die maximale Länge (nämlich 196 Zeichen) erreichen, nimmt die Streuung nach hinten logischerweise ab. Darum würde so ein längenbegrenzter Index vielleicht schon Sinn machen. Stell ich mir zumindest so vor.
ja, das kann durchaus sinn machen, den index kleiner zu halten und dml anweisungen zu beschleunigen. es gibt aber eine goldene regel beim datenbank-tuning, "probieren geht über studieren". so mancher experte hat sich schon gewundert, welch grosser unterschied zwischen seiner annahme und dem tatsächlichen ergebnis es gab. sprich, nimm einfach einen wert, der dir geeignet erscheint, schaue dir die geschwindigkeit der abfragen und den ausführungsplan an. ist es zu langsam, erhöhst du die indexlänge, ist es schnell gehts du weiter runter, bis du deinen wert gefunden hast.
Ilja