一、如果表定義的是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