场景一:

复合索引的替代方法,对多列字段拼接做hash,引入一个hashed 字段,对此字段添加索引,可以做到复合索引查询速度快,例:

SELECT * FROM tbl_name WHERE hash_col=MD5(CONCAT(val1,val2)) AND col1=val1 AND col2=val2;

 

场景二:如果存在一个索引(col1, col2, col3),查询要遵守左侧原则,例如

 

SELECT * FROM tbl_name WHERE col1=val1;   可以使用索引,因为clo1在最左侧

SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;  可以使用索引,

SELECT * FROM tbl_name WHERE col2=val2;  不可以

SELECT * FROM tbl_name WHERE col2=val2 AND col3=val3; 不可以