B-tree | Hash |
---|---|
需要从根节点到枝节点,最后才能访问到页节点 | 检索效率非常高 索引的检索可以一次定位 |
需要多次的IO访问 | Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询 |
查询效率要远低于 Hash 索引 | 无法被用来避免数据的排序操作 |
对于组合索引 ,不能利用部分索引键查询 | |
在任何时候都不能避免表扫描 | |
遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高 |
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。
为了进一步榨取MySQL的效率,就要考虑建立组合索引
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
索引大大提高了查询速度,同时却会降低更新表的速度
建立索引会占用磁盘空间的索引文件
索引不会包含有NULL值的列,在数据库设计时不要让字段的默认值为NULL