Hallo Pit,
Ich kann auf Deine Antwort keine Zitatantwort machen...
Nanu? Warum? Fehlt der Button "Antwort mit Zitat verfassen"? Guck mal in den Einstellungen unter "Komfort-Funktionen", da findest Du:
zitiere den vorherigen Beitrag per Default
o ja
o nein
o zeige zwei Buttons
Steht das bei Dir auf "Nein"?
Dafür, dass die Query so arbeitsaufwändig für das db-System ist, läuft sie aber echt ganz ok von der Geschwindigkeit her.
Ja, das ist bei einer großen DB wirklich erstaunlich. Die WHERE Bedingung grenzt die Menge der zu verarbeitenden Sätze auf bestimmte myStatus-Werte ein. Wenn das über Index gelingt und pro myStatus nicht zu viele Sätze in der DB sind, mag das der Grund sein. Die DB muss danach alle Sätze, die auf WHERE gepasst haben, lesen und deinen CAST(SUBSTRING_INDEX(myStatus, '-', -1) AS Wert)
darauf anwenden, bevor das Maximum gebildet werden kann.
Wobei ich diesen Cast nicht verstehe. Die Syntax ist CAST(foo AS type)
, und Wert
ist mal mit Sicherheit kein MYSQL-Typ. Dass es benutzerdefinierte Typen in MYSQL gäbe, wäre mir auch neu. Ist da beim Übertragen ins Forum was verändert worden? Es sieht aus wie: konvertiere den gefundenen Teilstring in eine Zahl, bilde das Maximum und konvertiere zurück in einen String.
Die Konvertierungen kannst Du sparen, wenn Du es so schreibst:
MAX(LPAD(SUBSTRING_INDEX(myStatus, '-', -1), 4, '0'))
Und es ist 14 Zeichen kürzer 😉
Rolf
sumpsi - posui - clusi