Axel Richter: Nur Wörter ausgeben die mit "a" anfangen

Beitrag lesen

Hallo,

Schau im MySQL-Handbuch im Kapitel zu Funktionen und Operatoren nach LIKE
ich weiß nicht wie das mit der Performance unter MySQL aussieht, aber evtl. sollte man mal ausprobieren wie sich das ganze entwickelt, wenn man statt LIKE einen Substring benutzt. Ist aber nur ein Experiment...

Hm, da ich solche Vorschläge hier schon häufiger gelesen habe, frage ich mal. Wie kann man auf die Idee kommen, dass

... WHERE SUBSTRING(feld, 1, 1) = 'a' ...

einen Performancevorteil gegenüber

... WHERE feld LIKE 'a%' ...

haben könnte?

Warum ich das frage?

1. Der LIKE-Operator ist standardgemäß in allen SQL-Dialekten enthalten und also ist seine Umsetzung in der WHERE-Klausel mit Sicherheit in RDBMS performant implementiert, wogegen bei String-Funktionen meist erst ein String-Aggregat angeworfen werden muss.
2. Mit LIKE 'a%' kann ein eventell auf feld liegender Index _garantiert_ genutzt werden. Bei der String-Funktion kommt es auf deren Implementierung an, da sie _nicht_ zum Standard-SQL gehört, sondern in jedem RDBMS separat implementiert ist.
3. Die Lesbarkeit der Codes ist ja wohl bei LIKE viele besser. Außerdem kann man weit weniger komplex variable Inhalte mit Hilfe von serverseitigen Programmiersprachen einfügen.

viele Grüße

Axel