[MySQL] Suchgeschwindikeit von Datentyp abhängig ?

Hallo,

mich würde mal interessieren, ob die Suchegeschwindigkeit, bzw. die Prozessor-/Speicherlast bei einer Suche (select * where bla=foo) von Datentyp bzw. von dessen Größe abhängt…
Konkret ist die Suche nach einer Integer Zahl, die als Auto-Increment und Uniq indexiert wird schneller, als in einem Index, der aus (uniqen) Varchars(45) besteht…

Ist der Performance-Unterschied spürbar, bzw. ab welchen Dimensionen spürbar ?

Danke und Gruß
Arne

Hallo Arne,

es versteht sich ja wohl von selbst, daß eine Suche in 16 oder 32 Bit schneller geht als eine Suche in (bis zu) 45 Byte!
Der Unterschied der Suche in Datentypen bis 32 Bit sollte unmerklich sein, da die heutigen Prozessoren ja eh alles in 32 Bit rechnen. Aber alles, was darüber liegt, braucht dann weitere Zyklen! Bei einer Textsuche hängt der Aufwand übrigens auch davon ab, wie die Texte verteilt sind - wenn alle Texte mit den gleichen Buchstaben anfangen, müssen diese auch immer durchsucht werden (unnötigerweise)!

Ab wann man den Unterschied merkt, hängt von diversen Faktoren ab - Speicher, Prozessor usw.! Aber es existiert auf jeden Fall ein Unterschied…

Kurt

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Bei
einer Textsuche hängt der Aufwand
übrigens auch davon ab, wie die Texte
verteilt sind - wenn alle Texte mit den
gleichen Buchstaben anfangen, müssen
diese auch immer durchsucht werden
(unnötigerweise)!

Hmm. Ich kenne MySQL nicht, aber da die Werte per unique index indiziert sind, würde Oracle an dieser Stelle immer einen Full Index Scan durchführen. Hier gibt es die Möglichkeit, clustered indexes anzulegen (sowas wie mehrstufige Indizes), die genau für solche Probleme geschaffen sind. Aber ob MySQL sowas hat, weiß der Kuckuck (zumindest nicht ich :smile:

Ab wann man den Unterschied merkt, hängt
von diversen Faktoren ab - Speicher,
Prozessor usw.! Aber es existiert auf
jeden Fall ein Unterschied…

…und nicht zu vergessen der Anzahl vorhandener Datensätze.

Gruß
J.