對於索引字段作函數操做,可能破壞索引值的有序性,所以優化器就決定放棄走樹搜索功能mysql
數據類型轉換的規則是什麼?sql
爲何有數據類型轉化,就須要走全索引掃描ide
在mysql中,字符串和數字比較的時候,是將字符串轉成數字函數
這裏的tradeId是varchar類型優化
select * from trade_log where tradeId=110717;編碼
至關於spa
select * from trade_log where cast(tradeId as signed int)=110717;索引
對索引字段作函數操做,優化器會放棄走樹搜索功能,使用了轉換函數,因此再也不使用索引字符串
mysql> select d.* from tradelog l, trade_detail d where d.tradeid=l.tradeid and l.id=2; /* 語句 Q1*/字符編碼
雖然d表上字段l.tradeid有索引,可是走了所有掃描,在索引上使用了函數,優化器放棄了走索引樹
select * from trade_detail where CONVERT(traideid USING utf8mb4)=$L2.tradeid.value;