高性能的索引
1、独立的列:索引列不能是表达式的一部分;
2、选择区分度高的列作为索引;
3、选择合适的索引列顺序:将选择性高的索引列放在最前列;
4、覆盖索引:查询的列均在索引中,不需要回查聚簇索引;
5、使用索引扫描来做排序;
6、在遵守最左前缀的原则下,尽量扩展索引,而不是创建索引。
索引失效场景
1、OR查询左右有未命中索引的;
2、复合索引不满足最左匹配原则;
3、Like以%开头;
4、需要类型转换;
5、where中索引列有运算;
6、where中索引列使用了函数;
7、如果mysql觉得全表扫描更快时(数据少时)
join
● sql联表join有条件不取值inner join 取值可用 left join
● 自连接仅发生在一张基表内;内连接中的自然连接结果是多表的交集;外连接中,除了交集,哪边连接,就加上哪边的表,无交集部分为 Null。