謝謝光光的問題分享,享受排查問題找到答案的程序
- MySQL會對varchar欄位的資料進行int的轉型
- 索引會失效
- 查詢即將變得很慢
- 不僅僅是這樣的型別會轉換,當型別匹配不上的時候MySQL將會替我們做一次型別轉換,比如之前用varchar的型別去查詢datatime,MySQL就是幫我們做了一次型別轉換才得以查詢
這篇文章寫得很好https://blog.csdn.net/u010825931/article/details/103811797
假設t_test表中的no是varchar型別的,那么
SQL1:SELECT * FROM t_test t1 where t1.no = 1;
SQL2:SELECT * FROM t_test t1 where t1.no = '1';
兩個查詢是不同的,SQL1的查詢實際跟以下查詢陳述句是相同的
SQL1:SELECT * FROM t_test t1 where CAST(t1.no AS signed int) = 1;
對索引欄位做函式操作,可能會破壞索引值的有序性,因此優化器就決定放棄走樹搜索功能,
小小的知識點,對以后遇到類似的問題可以有一個排查的思路,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/224342.html
標籤:其他
