Very wide indexes
Tom
- datenbank
Hello,
hat von Euch bei MySQL schon mal jemand mit sehr breiten Indexes gearbeitet?
Wenn ich das richtig ghelesen habe, darf die Breite eines Index unter InnoDB 767 Bytes pro Spalte nicht überschreiten und bei MyISAM 1000 Bytes oder 16 Spalten.
Ich möchte nun einen Index über zwei Spalten aufbauen, von denen eine Bigint ist und die andere VarChar (Binary).
Ob das überhaupt geht, weiß ich noch nicht.
Wie MySQL das dann sortiert, weiß ich auch noch nicht.
Wie langsam das Ganze wird, wenn man Inserts oder Deletes durchführt, weiß ich auch noch nicht
Ich wüsste das aber gerne. Bevor ich nun selber anfange zu basteln, würde ich gerne von Euren Erfahrungen zehren ;-))
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Moin
Ich möchte nun einen Index über zwei Spalten aufbauen, von denen eine Bigint ist und die andere VarChar (Binary)
Warum varchar??? Wenns binary ist, dann nutze den entsprechenden Datentyp, den MySql zur verfügung stellt. Ein Index über ein varcharfeld mit langen Datensätzen ist in der Regel "arschlangsam" (TM)
Zahlenwerte eignen sich grundsätzlich besser als Index. Bei langen varchar Werten ist evtl eine Hilfstabelle hilfreich.
Gruß Bobby
Hello,
Ich möchte nun einen Index über zwei Spalten aufbauen, von denen eine Bigint ist und die andere VarChar (Binary)
Warum varchar??? Wenns binary ist, dann nutze den entsprechenden Datentyp,
"binary" bezieht sich auf die Kollation, also die Anreihung der Daten (Sortierung), nicht auf die Darstellung der Daten.
den MySql zur verfügung stellt. Ein Index über ein varcharfeld mit langen Datensätzen ist in der Regel "arschlangsam" (TM)
Stellt mir MySQL denn auch einen Extra-Long-Datentyp zur Verfügung? Den kenne ich noch nicht.
Ich benötige ca. 240 Stellen mit vollen 8 Bit Nutzbreite = 1920 Bit.
Ich hätte gerne den Typ DECIMAL weiterbenutzt. Aber:
"M ist die Höchstzahl der Stellen (die Genauigkeit) und liegt zwischen 1 und 65. (Ältere Versionen von MySQL hatten hier einen zulässigen Wertebereich von 1 bis 254.)"
~~~>
> Zahlenwerte eignen sich grundsätzlich besser als Index. Bei langen varchar Werten ist evtl eine Hilfstabelle hilfreich.
Woher nimmst Du diese Erkenntnis?
MySQL verwaltet seine Indexe in B+Tree-Architektur. Da sollte es vollkommen egal sein, ob nur ein eingschränkter Wertebereich (Zahlen) oder ein voller Wertebereich (Digits à 8 Bit) zur Verfügung stehen. Das hat nchher nur Einfluss auf die Index-Breite (Anzahl horizontaler Blattseiten) und -Tiefe (Anzahl der vertikalen Blattseiten)
Und danach fragte ich: Hat schon mal jemand die erlaubte Indexbreite (Zeichenzahl) benutzt?
Aufgepasst: "Indexbreite" wird hier dopplet benutzt!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bikers-lodge.com>