mysql隱式轉換

2021-09-29 22:49:27 字數 899 閱讀 6516

定義:

當操作符與不同型別的運算元一起使用時,會發生型別轉換以使運算元相容。則會發生轉換隱式

舉乙個常見例子:

1、我們先建立乙個表,有關手機號查詢

create

table

user

(

id int(11

)not

null

primary

keyauto_increment

, phone varchar(30

)null

comment

"phone");

#手機號建立索引

alter

table

user

addindex idx_phone(phone)

;

2、我們去通過手機號索引查詢

explain

select

*from t_base_user where phone=

13510211254

;

結果:我們發現這個查詢是全表掃瞄,而沒走索引

3、正確的姿勢(走索引),如下

explain

select

*from t_base_user where phone=

'13510211254'

;

結論:我們細心會發現其實就是兩個都是查詢**,乙個是數字,乙個有單引號字串,這就是原因所在了。錯誤走全表掃瞄,mysql資料庫把phone欄位全部先轉換為數字再去找13510211254對比,所以才導致索引失效。這很容易導致線上出現慢查詢的問題,小心為妙。

參考:

mysql 隱式轉換 mysql中的隱式轉換

在mysql查詢中,當查詢條件左右兩側型別不匹配的時候會發生隱式轉換,可能導致查詢無法使用索引。下面分析兩種隱式轉換的情況 看表結構 phone為 int型別,name為 varchar 兩種情況都可以用到索引,這次等號右側是 2 注意帶單引號喲,左側的索引欄位是int型別,因此也會發生隱式轉換,但...

mysql隱式轉換

create table testsql id int 11 name varchar 11 descid varchar 11 alter table testsql add index descid alter table testsql add unique id insert into te...

mysql 隱式轉換 談談MySQL隱式型別轉換

前言今天我們繼續回到mysql系列文章中,談一談mysql中隱式型別轉換。其實我最早知道是在慢sql優化中知道隱式型別轉換概念的 在說隱式型別轉換之前,首先我們通過乙個例項來看看是怎麼回事。資料結構 本文中所有的操作,都是基於該資料結構 有興趣的童鞋,可以實驗 create table t base...