谢谢光光的问题分享,享受排查问题找到答案的过程web
这篇文章写得很好https://blog.csdn.net/u010825931/article/details/103811797svg
假设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;
对索引字段作函数操做,可能会破坏索引值的有序性,所以优化器就决定放弃走树搜索功能。.net
小小的知识点,对之后遇到相似的问题能够有一个排查的思路。code