可以先明确查询过程是什么,经历了哪些流程,再来看哪里可以做优化。
以下列出了我能想到的知识点,如果有错误或补充,希望大家可以提出来
1. 流程
- 建立连接(连接池)
- 消息发送(转码,utf-8)
- 查询过程
- 缓存
- 语法分析、语义分析
- 查询优化器
- 查询引擎
- 存储引擎选择
- 消息预加载(LRU链表)
- B+树结构
- 索引选择(聚簇索引、非聚簇索引)
- 查询成本:消息预处理、采样分析
- 索引失效
- 索引使用
- explain
- 回表
- 索引覆盖
- 如果是写SQL
- redo log
- undo log
- bin log
- 页分裂
- 事务(隔离性)
- 锁
- 数据返回(转码)
2. 提前准备:
- 存储引擎选择(InnoDB、myisam)
- 分库分表
- 分布式事务
- 水平分表、垂直分表
- 数据结构设计(varchar、int、datatime)
- 索引设计(索引数量、字段区分度)
- SQL设计
- join、union、having
- 索引失效
- limit分页
- distinct
网友评论