Mysql索引失效之隱式轉換

SkuId` varchar(32) NOT NULL COMMENT 'SkuId',mysql

  `SkuId` bigint(32) NOT NULL COMMENT 'SkuId',sql

根據以上現象咱們能夠看出當數據庫字段爲int類型的時候,入參類型不管是字符串仍是int,都可以命中索引;數據庫

                         當數據庫字段類型爲varchar類型的時候,入參類型必須爲varchar類型,纔可以命中索引;索引

查了下mysql相關的資料,介紹以下:字符串

mysql在比較值的時候,若是兩邊值的類型不匹配,那麼就會進行隱式類型轉換(轉化成浮點類型);im

總結以下:            當等式兩邊類型不一致的時候,都會被轉換爲浮點數再進行比較。總結

                             當等式左邊varchar類型轉化成浮點類型的時候,不會命中索引;數據

                             當等式左邊是浮點類型的時候,右邊類型轉化不轉化都可以命中索引;img

相關文章
相關標籤/搜索