1.索引类型
B-Tree : 索引顺序存储,根据索引的根节点搜索,向下层查找。叶子节点指向被索引的数据,树的深度和表的大小有关。顺序存储,很适合范围查找。索引的列顺序可能会影响索引的使用。
哈希索引 : 只有精确匹配索引所有列的查询才有效。而且叶子节点存放的是行指针和哈希值,所以无法使用排序,同时哈希索引也不支持索引列匹配查找。只支持等值比较,不支持范围查找。可能会出现哈希冲突,维护成本会增高。
全文索引:/
2.索引的优点
1.减少服务器扫描的数据量 : 索引可以快速定位到表的指定位置
2.避免不需要的排序和临时表 : 索引是有序的
3.可以将随机I/O变为顺序I/O:索引中存储了实际的列值,某些查询只需要查询索引就可以完成全部查询。
3.高性能索引策略
1.独立的列:不参与计算和作为函数的参数
2.前缀索引和索引选择性 : 过长的字段作为索引时,可以选择合适的长度作为前缀索引,避免全部匹配,提高性能。通常选择选择性高的列作为索引。
3.多列索引:索引合并,联合索引,关注索引顺序等
4.选择合适的索引顺序:不考虑排序和分组时,通常选择选择性高的索引放到最左侧
5.聚簇索引:索引和数据放在一起,查询效率高。
6.索引覆盖:不用回表
7.使用索引扫描做排序:索引本身是有序的,满足最左前缀原则
8.压缩索引:/
9.冗余和重复索引:优化器在选择时会逐个的进行考虑选择索引,会影响性能。
10.未使用的索引:删除
11.索引和锁:让查询锁定更少的行和更快的定位。