Hallo Daniela,
Selbst bei längeren und variabel langen Zeichenketten
werden sich die Zusatzkosten in Grenzen halten - wobei
ich Christians Vermutung, daß eine Hash-Funktion
verwendet wird, nicht uneingeschränkt teilen kann, denn
dann wäre der Index für Präfixzugriffe unbrauchbar,
denke ich ...
Korrekt. Indizes koennen ja fuer Praefix-Zugriffe auch nicht
benutzt werden. ein 'LIKE "%blahr"' kann nicht ueber den
Index ausgewertet werden (zumindest wuesste ich nicht, wie
das gehen sollet).
Fuer *Suffix*-Zugriffe kommt es darauf an, was fuer eine
Aber du hast recht, ein Hashing-Index eignet sich aeusserst
schlecht fuer derartige Zugriffe. Ich glaub, ich war etwas
voreilig und haette besser sagen sollen, es *gibt* auch
Hashing-Indizes :)
Wenn ich das richtig verstehe, müsste ja ein Hashingkey
auf einen String besser geeignet sein als eine normaler
Index.
Der Zugriff ist schneller, ja. Eine schnelle Hash-Funktion
braucht 6xLength(key)+32 Zyklen um eine Hash-Sum auszurechen.
Der Lookup in der Tabelle braucht dann nochmal etwa sechs
Zyklen, wenn ich das richtig in Erinnerung habe (ins Register
holen, Addieren, Multiplizieren, ins Register holen). Dann
waeren wir bei 6xLength(key) + 38 Zyklen fuer einen
Hash-Lookup bei der Annahme, dass die Hash-Funktion perfekt
ist (was sie natuerlich bei endlicher Schluessellaenge nicht
sein kann).
Weist du etwas gutes zu lesen zu Hashing-Funktionen?
http://burtleburtle.net/bob/hash/evahash.html#universal
fand ich sehr interessant. Ansonsten vielleicht noch
http://www.x5.net/faqs/crypto/q94.html
Ich war bisher zu faul nach deiner Mailadresse zu suchen.
Gruesse,
CK