1.检查共享池中是否有之前解析相同的SQL语句后所存储的SQL文本、解析树和执行计划。
如果能从共享池的缓存库中找到之前解析过生成的执行计划,则SQL语句则不需要再次解析,便可以直接由库缓存得到之前所产生的执行计划,从而直接跳到绑定或执行阶段,这种解析称作软解析。 但是如果在共享池的库缓存中找不到对应的执行计划,则必须继续解析SQL、生成执行计划,这种解析称作硬解析
2.语法分析,分析SQL语句的语法是否符合规范,衡量语句中各表达式的意义
3.检查是否存在语义错误和权限。语义分析,检查语句中设计的所有数据库对象是否存在,且用户有相应的权限。
4.视图转换和表达式转换 将涉及视图的查询语句转换为相应的对基表查询语句。将复杂表达式转化较为简单的等效连接表达式。
5.决定最佳执行计划。优化器会生成多个执行计划,在按统计信息带入,找出执行成本最小的执行计划,作为执行此SQL语句的执行计划
6.将SQL文本、解析树、执行计划缓存到库缓存,存放地址以及SQL语句的哈希值。
原文地址:https://blog.51cto.com/u_15338523/3592593