Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es schneller, beim Vergleichen in MySQL in varchar oder varchar in int zu konvertieren?

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.