Tach!
Ich seh das nicht als tragisch an. Ob in dem SQL-Statement zuerst ein String erkannt wird und anschließend die Zahl daraus konvertiert wird, oder ob die Zahl direkt aus einem Zahlenliteral konvertiert wird, macht das Kraut nicht fett. In beiden Fälle steht sie da als String.
Aus der hiesigen Argumentation finde ich es auch nicht weiter schlimm. Aber: damit kann man sich bei Mysl/MariaDB böse Performanceeinbußen einfangen, wenn man in einer Query z.B. auf '1' abfragt, obwohl es sich um ein indiziertes Zahlenfeld handelt. Wie immer, merkt man natürlich erst bei entsprechend großen Datenmengen. „Klappen“ tuts auch mit dem Cast.
Ich stelle da keinen Unterschied bei einem EXPLAIN fest. In beiden Fällen wird der Index als nutzbar angegeben. Die Laufzeiten sind auch nicht signifikant unterschiedlich. Mein Test hatte ca. 3 Mio Datensätze.
dedlfix.