Điều đó phụ thuộc vào các chỉ số. Nếu cả hai cột đều có chỉ mục được đặt, bạn nên chuyển thành int
, bởi vì nó chỉ cần so sánh 4 byte. Tuy nhiên, nếu chỉ varchar
cột được lập chỉ mục, truyền đến varchar
.
Cuối cùng, bạn nên có explain
truy vấn của mình ed, để xem chỉ mục nào được sử dụng và truyền cho phù hợp.
Nếu không có chỉ mục nào được đặt, truyền thành int
là cách tiếp cận tốt hơn nói chung. Tuy nhiên, nếu không có bộ lập chỉ mục, điều đó không thực sự quan trọng, bạn sẽ tiết kiệm được nhiều thời gian hơn khi lập chỉ mục hơn là chọn đúng cách để ép kiểu. Ngoại trừ, một lần nữa, các bàn nhỏ. Sau đó, nó cũng không thực sự quan trọng.
Trên thực tế, chúng ta không chỉ nên tính đến chi phí để so sánh mà còn cho quá trình truyền:Truyền một int
tới một varchar
nhanh hơn một chút so với phân tích cú pháp varchar
thành một int
. Tuy nhiên, so sánh một varchar có ít nhất 4 ký tự sẽ khiến lợi thế đó trở nên vô dụng. Nếu các giá trị của bạn có xu hướng cao hơn 999, hãy truyền đến int
sẽ nhanh hơn. Nhưng điều đó bây giờ phụ thuộc vào hệ điều hành của bạn, kiến trúc, tập lệnh được sử dụng bởi nhị phân mysql của bạn, v.v. Cách duy nhất để có được câu trả lời thực sự đáng tin cậy là:Đánh giá tình huống đó trên máy mục tiêu.