Itu tergantung pada indeks. Jika kedua kolom memiliki indeks yang disetel, Anda harus mentransmisikan ke int
, karena hanya perlu membandingkan 4 byte. Namun, jika hanya varchar
kolom diindeks, dilemparkan ke varchar
.
Pada akhirnya, Anda harus memiliki permintaan explain
ed, untuk melihat indeks apa yang digunakan, dan lakukan transmisi yang sesuai.
Jika tidak ada indeks yang disetel, transmisikan ke int
adalah pendekatan yang lebih baik secara umum. Namun, jika tidak ada kumpulan indeks, itu tidak masalah, Anda akan menghemat lebih banyak waktu dengan mengindeks daripada dengan memilih cara yang benar untuk mentransmisikan. Kecuali, sekali lagi, mejanya kecil. Kalau begitu, itu juga tidak masalah.
Faktanya, kita harus memperhitungkan tidak hanya biaya untuk perbandingan, tetapi juga untuk casting:Casting int
ke varchar
sedikit lebih cepat daripada mengurai varchar
ke int
. Namun, membandingkan varchar yang memiliki setidaknya 4 karakter akan membuat keunggulan itu tidak berguna. Jika nilai Anda cenderung lebih tinggi dari 999, transmisikan ke int
akan lebih cepat. Tapi itu sekarang tergantung pada sistem operasi Anda, arsitektur, set instruksi yang digunakan oleh biner mysql Anda dan sebagainya. Satu-satunya cara untuk mendapatkan jawaban yang benar-benar andal adalah:Tolok ukur situasi tersebut pada mesin target.