为什么不要对where条件中的字段使用函数和字段?
案例一:条件字段函数操作
mysql> select count(*) from tradelog where month(t_modified)=7;
对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。
select * from tradelog where id + 1 = 10000
案例二 隐式类型转换
字符串会转换为int
tradeid varchar
mysql> select * from tradelog where tradeid=110717;
相当于对tradid字段使用了函数
mysql> select * from tradelog where CAST(tradid AS signed int) = 110717;
案例三:隐式字符编码转换