Pit: mysql: Query gesucht

Beitrag lesen

Hallo Rolf,

Nanu? Warum? Fehlt der Button "Antwort mit Zitat verfassen"? Guck mal in den Einstellungen unter "Komfort-Funktionen", da findest Du:

Nein, der war da. Das sah nach einem JS-Fehler aus, ich habs aber nicht weiter untersucht. Heute habe ich es nochmal versucht und es ging problemlos.

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.

Ich frage mal ganz naiv in den Raum: Wäre es ggf. sinnvoller, über die Tabelle eine temporäre Tabelle zu erzeugen, innerhalb derer man die relevante Spalte in 3-4 Einzelspalten zerlegt und darin sucht? Diese Frage stelle ich auch vor allem vor dem Hintergrund meiner Nachfrage.

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.

Ich dachte, dass mysql nur das Max. von Integern suchen kann, daher der Cast. Das AS Wert ist ein Zurückkonvertieren zum String? Wußt ich nicht...

Die Konvertierungen kannst Du sparen, wenn Du es so schreibst:
MAX(LPAD(SUBSTRING_INDEX(myStatus, '-', -1), 4, '0'))

Mysql kann das? Muß ich veruschen...

Pit