Mysql目前用的innodb引擎以及B+ tree索引(多路搜索树)
B+ tree 是聚合索引
以下是索引模拟创建过程的网站
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
高效索引原则
- 最左匹配
- 离散型高,选择性就越好 (重复性越少的字段)
- 空间利用少 (宽度值小,如:varchar(1) 宽度值为1 )
> 1. in使用索引
> 2. not in 和 <> 不使用索引
> 3. like '%123' 使用索引
> 4. like '%123%' 和 like '%123' 都不使用索引
如何查看当前是否是复和索引?
复合索引就是直接返回的数据信息
select id,name from user where name = ?; (name)字段是index时,就会采用复合索引
select name,no from user where name = ?; (name)字段是index时,就不会采用复合索引
select name,no from user where name = ?; (name,no)字段是联合索引index时,就会采用复合索引
select name from user where name = ?; (name,no)字段是联合索引index时,就会采用复合索引
通过以下sql查看sql语句是否使用了复合索引:
explan EXPLAIN SELECT id FROM `view` where id = 1
判断方法:
- 字段type的值为 warn 以上级别的。
- 字段extra的值包含 Using index; 的。