15.索引优化原则:1)全值匹配,查询语句尽量使用全值匹配。2)左前缀原则,如果一个索引是组合索引,索引了多列,要遵循左前缀原则,即查询从索引的左前缀开始,不能跳过索引中间的列。3)不要在索引列上操作,操作包括:计算、函数、自动或手动的类型转换,不要在索引列上做上述任何操作,否则索引失效并转为全表扫描。4)范围条件右边的列索引全失效,当组合索引中出现范围条件,那么该范围条件右边的列索引全部失效,例如not in,in > ,<。因此在设计和使用索引时,应把经常进行范围查询的列作为索引的最右列。5)按需取数据,少用select ***,在查询中少用select *,否则MySQL需要遍历结果列存在哪些字段。同时,应尽量使用覆盖索引,能避免二次查表。6)避免使用 != 或 <>,在使用不等于(!= 或 <>)时,无法使用索引,导致全表扫描。7)避免is null 或 is not null,判断空值的查询条件索引失效,导致全表扫描。8)避免like以通配符开头,查询条件like以通配符%开头,如 name like ("%abc"),索引失效,导致全表扫描,XXX%右模糊查询是可以使用索引的。那么如果业务需要必须要用通配符%开头怎么办?答案是:使用覆盖索引(覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖)。