给开发童鞋的索引学习漫画
【转载说明】此文章乃@小熊 童鞋独立创作的,
经@小熊允许@小峰童鞋微调并转载的哦~
谢谢观看~ღ( ´・ᴗ・` )比心
1、MySQL 以主键值构造一棵树,叶子节点存放着该主键值对应的的整行数据。此为聚簇索引。
2、其他的索引为辅助索引,叶子节点存放着索引字段的值及对应的主键值。
3、一般情况下,单表查询每次只能用一条索引。
4、where 条件字段的顺序与索引顺序无关,MySQL 优化器会自动调整顺序。
5、对查询 where 条件中区分度高的字段加索引。
6、通过索引扫描的行数超过全表 30% 时,变全表扫描。
7、联合索引,叶子节点存储的顺序以创建时指定的顺序为准,因此区分度高字段的放左边,能被多个查询复用到的放左边。
8、只 select 需要用到的字段,避免 select * 。
9、如有必要,可使用 USE/FORCE/IGNORE INDEX 强制索引 。
10、多表 join ,先按各表的查询条件比较哪个开销小,从小表取出所有符合条件的,到大表循环查找。
11、以下情况无法使用到索引:
like通配符在最左如:like '%dd', not in , != , <> ,对列做函数运算,隐式数据类型转换, or 子句。
对不确定执行计划的关键语句 select/update/delete ,上线前都务必进行 explain
,查看索引是否合适哟~