Това зависи от индексите. Ако и двете колони имат зададени индекси, трябва да прехвърляте към int , защото трябва да сравни само 4 байта. Ако обаче само varchar колоната е индексирана, прехвърля се към varchar .
Накрая трябва да имате заявката си explain ed, за да видите какъв индекс ще се използва и съответно прехвърляне.
Ако не е зададен индекс, прехвърляне към int е по-добрият подход като цяло. Въпреки това, ако няма набор от индекси, това всъщност няма значение, ще спестите много повече време чрез индексиране, отколкото като изберете правилния начин за предаване. Само дето отново масите са малки. Тогава също няма значение.
Всъщност трябва да вземем предвид не само разходите за сравнение, но и за кастинг:Прехвърляне на int към varchar е малко по-бърз от анализа на varchar към int . Въпреки това, сравняването на varchar, който има поне 4 знака, ще направи това предимство безполезно. Ако вашите стойности обикновено са по-високи от 999, прехвърляйте към int ще бъде по-бързо. Но това вече зависи от вашата операционна система, архитектурата, набора от инструкции, използван от вашия двоичен файл mysql и така нататък. Единственият начин да получите наистина надежден отговор е:Сравнете тази ситуация на целевата машина.