Dat hangt af van de indexen. Als voor beide kolommen indexen zijn ingesteld, moet u casten naar int
, omdat het maar 4 bytes hoeft te vergelijken. Als echter alleen de varchar
kolom is geïndexeerd, gecast naar varchar
.
Aan het einde moet u uw vraag explain
. hebben ed, om te zien welke index wordt gebruikt en dienovereenkomstig te casten.
Als er geen index is ingesteld, casten naar int
is in het algemeen de betere benadering. Als er echter geen index is ingesteld, maakt het niet zoveel uit, u zou veel meer tijd besparen door te indexeren dan door de juiste manier van casten te kiezen. Behalve, nogmaals, de tafels zijn klein. Dan maakt het ook niet zoveel uit.
In feite moeten we niet alleen rekening houden met de kosten voor vergelijking, maar ook voor het casten:Een int
casten naar een varchar
is iets sneller dan het ontleden van een varchar
naar een int
. Het vergelijken van een varchar met minimaal 4 tekens maakt dat voordeel echter onbruikbaar. Als uw waarden meestal hoger zijn dan 999, casten naar int
zal sneller zijn. Maar dat hangt nu af van je besturingssysteem, de architectuur, de instructieset die door je mysql-binary wordt gebruikt, enzovoort. De enige manier om een echt betrouwbaar antwoord te krijgen is:Benchmark die situatie op de doelcomputer.