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