Det afhænger af indekserne. Hvis begge kolonner har indekser indstillet, skal du caste til int
, fordi den kun skal sammenligne 4 bytes. Hvis dog kun varchar
kolonne er indekseret, cast til varchar
.
Til sidst skal du have din forespørgsel explain
ed, for at se hvilket indeks der bliver brugt, og cast derefter.
Hvis der ikke er indstillet et indeks, cast til int
er den bedre tilgang generelt. Men hvis der ikke er et indekssæt, betyder det ikke rigtig noget, du vil spare meget mere tid ved at indeksere end ved at vælge den korrekte måde at kaste på. Bortset fra igen, at bordene er små. Så er det heller ikke lige meget.
Faktisk bør vi ikke kun tage højde for omkostningerne til sammenligning, men også til casting:Casting an int
til en varchar
er lidt hurtigere end at parse en varchar
til en int
. Men at sammenligne en varchar, der har mindst 4 tegn, vil gøre denne fordel ubrugelig. Hvis dine værdier har tendens til at være højere end 999, skal du caste til int
vil være hurtigere. Men det afhænger nu af dit operativsystem, arkitekturen, instruktionssættet brugt af din mysql binære og så videre. Den eneste måde at få et rigtig pålideligt svar på er:Benchmark den situation på målmaskinen.