mysql中的隱式轉換

2022-03-12 23:21:21 字數 806 閱讀 2760

在mysql查詢中,當查詢條件左右兩側型別不匹配的時候會發生隱式轉換,可能導致查詢無法使用索引。下面分析兩種隱式轉換的情況

看表結構 phone為 int型別,name為 varchar

explain select * from user where phone   = '2'

explain select * from user where phone   = 2

兩種情況都可以用到索引,這次等號右側是'2',注意帶單引號喲,左側的索引欄位是int型別,因此也會發生隱式轉換,但因為int型別的數字只有2能轉化為'2',是唯一確定的。所以雖然需要隱式轉換,但不影響使用索引,不會導致慢查詢

explain select * from user where name= '2'

這種情況也能使用索引,因為他們本身就是varchar 型別

因為等號兩側型別不一致,因此會發生隱式轉換,cast(index_filed as signed),然後和2進行比較。因為'2','   2','2a'都會轉化成2,故mysql無法使用索引只能進行全表掃瞄,造成了慢查詢的產生。

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

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

mysql 關閉隱式轉換 Mysql中的隱式轉換

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

mysql日期隱式轉換 mysql中的隱式轉換

什麼隱式型別轉換?在mysql中 當操作符與不同型別的運算元一起使用時,會發生型別轉換以使運算元相容。則會發生轉換隱式 也就是說,mysql會根據需要自動將數字轉換為字串,將字串轉換數字。看到這個概念之後,是不是有一種茅塞頓開的感覺。哦.原來在資料結構中telephone欄位為字串 varchar ...