關於MySQL隱式轉換
一、如果表定義的是varchar字段,傳入的是數字,則會發生隱式轉換。
1、表DDL
2、傳int的sql
3、傳字符串的sql
仔細看下錶結構,rid的字段類型:
而用戶傳入的是int,這裏會有一個隱式轉換的問題,隱式轉換會導致全表掃描。
把輸入改成字符串類型,執行計劃如下,這樣就會很快了。
此外,還需要注意的是:
數字類型的0001等價於1
字符串的0001和1不等價
二、如果表定義的是int字段,傳入的是字符串,在不超過int範圍內,不會發生隱式轉換,如果超出範圍並且比較大小(以字符串類型比較'$')會隱式轉換。
1、表DDL
2、不超範圍傳字符串的sql
3、不超範圍傳數字的sql
4、超出範圍傳字符串的sql
5、超出範圍傳數字的sql