SQL执行分四步
一、parse(最耗资源)
1. 从 shared pool-->library cache 中搜索。凡是执行过的 SQL 语句,Oracle会使用 HASH() 函数进行计算,产生一个很小的文本记录。如果第一次执行,则进入第二步
2. 检查 SQL 语法、权限 等(权限信息 存放在 Oracle的数据字典 中)。Oracle先从 shared pool-->data dictionary cache 中搜索;若找不到,则从 数据文件(其存放于system表空间) 中读取,然后存放入 shared pool-->data dictionary cache 以便共享
3. 分析过程中,对访问到的表进行 锁操作,目的是为了保护表的结构不被修改
4. Oracle优化器 会根据数据的存储结构(表的存储结构、索引)统计信息等,计算各种读取的代价,选择一条代价最佳的路径(代价最小),生成执行计划,同时编译并存储在 shared pool-->library cache 中
二、bind
Oracle对这两条语句是否被共享,要求非常严格, 两条语句必须 完全一致下面两条语句不会被share
-- 不会被share
select ename, job from emp where empno=7788;
select ename, job from emp where empno=7789;
写成参数形式,传入 7788, 7799,这样就可以共享下面的 SQL 啦
select ename, job from emp where empno=&employee_num;