- 索引失效
-
隐式类型转换:表字段类型为 varchar , 查询条件为 int 型。
以 menu_order 为例
这个时候该字段类型为 int,
sql1:EXPLAIN SELECT * FROM wp_xk_product_info WHERE menu_order = '1000'

sql2: EXPLAIN SELECT * FROM wp_xk_product_info WHERE menu_order = 1000

上面的 sql 看出,当字段类型为 int 的时候,不管过滤条件是 int 还是 string,都不会对索引造成影响。

测试字段类型现在为 varchar
sql1:
EXPLAIN SELECT * FROM wp_xk_product_info WHERE menu_order = 1000

sql2:
EXPLAIN SELECT * FROM wp_xk_product_info WHERE menu_order = '1000'

对比看出,当字段类型为 int 的时候,查询条件为 int or string 都能用到索引;但是当字段类型为 varchar 的时候,只有过滤条件为 varchar 的时候才能用到索引。
网友评论