查询语句的执行过程
- 通过网络的通讯协议接收客户端传入的SQL
- 查看该SQL对应的结果在查询缓存中是否存在
- 存在则直接返回结果
- 不存在则继续往下走
- 由解析器来解析当前SQL,最终形成初步的解析树
- 再由预处理器对解析树进行调整,完成占位符赋值等操作
- 查询优化器对最终的解析树进行优化,包括调整SQL顺序等
- 根据优化后的结果得出查询语句的执行计划,就是查询数据的具体实施方案,交给查询的执行引擎
- 查询执行引擎调用存储引擎提供的API,最后由存储引擎来完成数据的查询,然后返回结果
sql 查询语句优化(主要是优化索引)
- 尽量不是使用select * 查询语句,用哪个字段查哪个字段
- 应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索
引而进行全表扫描,如:select id from t where num=10 or num=20
可以这样查询:select id from t where num=10 union all select id from t where num=20