背景:
数据库is_delete字段字段查询速度慢,经过排查发现是传入的数据的类型问题。
为class_name和is_delete字段加索引,按最左匹配原则is_delete在前
is_delete类型设置为tinyint
is_delete传入”0”执行查询,索引生效
is_delete传入0执行查询,索引生效
is_delete类型设置为varchar
is_delete传入”0”执行查询,索引生效
is_delete传入0执行查询,索引失效
总结:
设计实体类的数值类型的时候,一定要和数据库的数据类型进行对应,避免索引失效的情况的出现。
Mysql添加索引的情况下,如果数据库数据类型是数值类型,传入数值类型和字符串类型索引都生效;如果数据库类型是字符串类型,只有传入的是字符串类型索引才生效。
最左匹配原则:is_delete和class_name的组合索引只有is_delete在前面才会出现上述id_delete数据类型不一样的情况,如果class_name在前面那么又是另外的情况了。