您好,登錄后才能下訂單哦!
這篇文章主要介紹了Mysql 5.6 "隱式轉換"導致的索引失效和數據不準確的解決方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
背景
下面我們來看一下執行的結果
在上面的描述中我們還得注意就是,你的where條件的字符串不加單引號必須是全數字。不然就會報錯
還有可能查出來的數據不是我們想要的數據。如下圖
分析
如上圖所述:
1054 - Unknown column '000w1993521' in 'where clause', Time: 0.008000s
我們先來看一下一條SQL的執行過程
(網圖)
隱式轉換
1. 產生條件
當操作符與不同類型的操作數一起使用時,會發生類型轉換以使操作數兼容。則會發生轉換隱式
發生隱式轉換的條件:
2. 分析實際遇到的情況
1.那我們也就清楚了,上面我提出的例子是整數和字符串的比較,那就屬于其他情況了。那我們就先來分析一下索引失效的原因
2.查詢出不匹配的值(或者說是部分匹配的值),如上面的查詢結果。這真得看看源碼了,這也就是MYsql的隱式轉換規則。這里不就細分析了(因為沒有查到相關的文檔)
由于歷史原因,需要兼容舊的設計,可以使用 MySQL 的類型轉換函數 cast 和 convert,來明確的進行轉換。
總結
感謝你能夠認真閱讀完這篇文章,希望小編分享Mysql 5.6 "隱式轉換"導致的索引失效和數據不準確的解決方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。