Das hängt von den Indizes ab. Wenn für beide Spalten Indizes festgelegt sind, sollten Sie in int
umwandeln , da nur 4 Bytes verglichen werden müssen. Wenn allerdings nur die varchar
Spalte wird indiziert, in varchar
umgewandelt .
Am Ende sollten Sie Ihre Abfrage explain
haben ed, um zu sehen, welcher Index verwendet wird, und wandeln Sie ihn entsprechend um.
Wenn kein Index gesetzt ist, wird nach int
gecastet ist generell der bessere Ansatz. Wenn es jedoch keinen Indexsatz gibt, spielt es keine Rolle, Sie würden durch die Indizierung viel mehr Zeit sparen als durch die Wahl der richtigen Art der Umwandlung. Außer, wieder, die Tische sind klein. Dann ist es auch egal.
Tatsächlich sollten wir nicht nur die Kosten für den Vergleich berücksichtigen, sondern auch für das Casting:Casting eines int
zu einem varchar
ist etwas schneller als das Parsen eines varchar
zu einem int
. Der Vergleich eines Varchar mit mindestens 4 Zeichen macht diesen Vorteil jedoch nutzlos. Wenn Ihre Werte tendenziell höher als 999 sind, wandeln Sie sie in int
um wird schneller sein. Aber das hängt jetzt von Ihrem Betriebssystem, der Architektur, dem von Ihrer MySQL-Binärdatei verwendeten Befehlssatz und so weiter ab. Der einzige Weg, um eine wirklich zuverlässige Antwort zu erhalten, ist:Vergleichen Sie diese Situation auf dem Zielcomputer.