摘要: 1.什么情况不适合创建索引? 列的离散程度不高:即使创建了索引,也不会走索引,因为需要额外的回表操作,它的cost可能会比全表扫表更高。 不经常查询的字段:创建索引会占用额外的存储开销、性能开销。 频繁更新的字段:频繁更新会导致频繁页分裂,需要迁移数据,会降低性能。 字段数据占用空间过大:会导致索引 阅读全文
posted @ 2020-08-08 20:14 kancy 阅读(731) 评论(0) 推荐(0) 编辑
摘要: MySQL 一条查询SQL语句的执行过程? 建立连接 查询缓存:开启查询缓存功能会按照sql报文作为key,查询缓存。 解析器:生成词法语法解析树。 预处理器:语义的校验,例如表名,字段名是否正确。 查询优化器:生成多套执行计划,并计划cost,花费最小的为最终的查询计划。 执行器:执行查询计划,会 阅读全文
posted @ 2020-08-08 19:30 kancy 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 1.建议使用有序的自增ID作为主键 MySQL InnoDB 引擎底层数据结构是 B+ 树,所谓的索引其实就是一颗 B+ 树,一个表有多少个索引就会有多少颗 B+ 树,mysql 中的数据都是按顺序保存在 B+ 树叶子节点上的(所以说索引本身是有序的)。 主要目的有三个: 提高范围查询效率; 增加排 阅读全文
posted @ 2020-08-08 18:50 kancy 阅读(4612) 评论(2) 推荐(0) 编辑