Zeichenindizes
In Firebird vor Version 2.0 kann ein Problem beim Erstellen eines Indexes für Zeichenspalten auftreten, die eine nicht standardmäßige Kollatierungssequenz verwenden: Die Länge eines indizierten Felds ist auf 252 Byte begrenzt, wenn COLLATE
nicht angegeben ist, oder 84 Byte, wenn `COLLATE ` ist angegeben.Multi-Byte-Zeichensätze und zusammengesetzte Indizes begrenzen die Größe noch weiter.
Ab Firebird 2.0 beträgt die maximale Länge für einen Index ein Viertel der Seitengröße, d. h. von 1.024 — für die Seitengröße 4.096 — bis 8.192 Bytes — für die Seitengröße 32.768.Die maximale Länge einer indizierten Zeichenfolge beträgt 9 Byte weniger als diese Viertelseitenbegrenzung.
Die folgende Tabelle zeigt die maximale Länge einer indizierten Zeichenfolge (in Zeichen), je nach Seitengröße und Zeichensatz, berechnet mit dieser Formel.
Seitengröße |
Bytes je Zeichen |
||||
---|---|---|---|---|---|
1 |
2 |
3 |
4 |
6 |
|
4.096 |
1.015 |
507 |
338 |
253 |
169 |
8.192 |
2.039 |
1.019 |
679 |
509 |
339 |
16.384 |
4.087 |
2.043 |
1.362 |
1.021 |
681 |
32,768 |
8,183 |
4,091 |
2,727 |
2,045 |
1,363 |
Note
|
Bei Sortierungen, bei denen die Groß-/Kleinschreibung nicht beachtet wird (“_CI”), belegt ein Zeichen im index nicht 4, sondern 6 (sechs) Bytes, sodass die maximale Schlüssellänge für eine Seite von z 169 Zeichen. |
CREATE DATABASE
, Sortierreihenfolge, SELECT
, WHERE
, GROUP BY
, ORDER BY