Servus,
für welche Geschwindigkeit spielt es keine Rolle?
Bis das Suchergebniss geliefert wird oder bis die Abfrage vom System angenommen wurde?
Doch es spielt eine Rolle, ob Du nach Chars suchst oder nach Zahlen. Es macht sogar sehr viel aus.
Wenn Du in Character Felder suchst, wird der Binärschlüssel verglichen.
Wenn Du nach Zahlen suchst, wird ein anderer Algomrytmus verwendet.
Select * from tabelle where spalteninhalt = "abcde"
Passiert folgendes.
In Charackter Felder wird jeder Datensatz verglichen.
Bei Zahlen wird eine geordnete Liste erzeugt.
Und dann passiert folgendes.
Select * from tabelle where suchspalte = 1024
Nehmen wir an wir haben 100 Datensätze.
Dann wird "idealerweise" * der erste und letzte Satzt geprüft. Treffen diese nicht zu, wird der 50. Satz geprüft kleiner oder grösser oder = Suchwert.
Je nachdem wird weiter gesucht. Dann entweder bei 25 usw.
Hol man den Taschenrechner raus.
Im Bereich von etwa spätestens 10 Wertvergleichen erhält man das Ergebnis.
Bei Character muss jeder der Datensätze verglichen werden.
Was schneller ist, dürfte klar sein oder?
Allerdings wurde an dem Algorytmus gefeilt und geschliffen, so das diese Form kaum noch Verwendung findet.
Das schlimmste ist, wenn Du nur Teile eines Strings sucht. also mit like.
Natürlich lässt sich obige Methode auch teilweise für die Eingrenzung der Suchmenge verwenden. Aber eben nur eine grobe eingrenzung. Und auc nicht bei jedem Fall der Anfrage.
Nehmen wir an, Du suchst bei einer entsprechenden Liste alle Artikel mit Stückzahl 20.
Die Zahlen werden sortiert, mit obiger Methode gelangt man recht schnell zu den Artikel mit 20 als Stückzahl. Man geht jeweils um eines nach oben in der Liste, bis da etwas kleiner als 20 kommt, springe an das unter Ende des ersten Treffers und verfolge die Liste nach unten bis ein Ergebnis grösser als 20 kommt.
Versuche nun etwas Binäres aus einer Wurst heraus zu filtern, was man leider so mathematisch nicht mehr beschreiben kann.
Liefer mir alle Artikel welche den Buchstaben a enthalten.
Ball
Haus
Auto
Kerzenständer
Schleifband
Knetmaschiene
Holzofen.
Wankelmotor.
Versuch nun diese Binären Zahlen mathematisch so zu ordnen, dass Du genau so eine Reihenfolge bekommst wie oben.
Geht nicht. Das kannst Du leider nicht mathematisch in eine Regel fassen.
Du kommst sicherlich nun mit der Idee.
Aber was ist, wenn ich alle Artikelnummer suche, wo die Zahl 5 drin vor kommt.
Das ist eine Character Anfrage und keine Integer Anfrage.
Denn jetzt wird die Zahl, wo Du ermitteln willst zwangsweise zu einem "Wort" character umgewandelt.
Im Regelfall musst Du das sogar selbst in deinem SQL tun.
Gruss Matze