select count(*0 from work_city where sdesc like 'NEW%'; 能 两个用户访问相同的对象public synonym - work_city
select a.sdesc,b.location from work_city a , plant_detail b where a.city_id = b.city_id 不能 用户jack 通过private synonym访问plant_detail 而jill 是表的所有者,对象不同 C.两个SQL语句中必须使用相同的名字的绑定变量(bind variables) ,例如: 第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值) a.select pin , name from people where pin = :blk1.pin; select pin , name from people where pin = :blk1.pin; b.select pin , name from people where pin = :blk1.ot_ind; select pin , name from people where pin = :blk1.ov_ind;
sql优化是其中的一部分,重要的一部分!
对象名
如何访问
Jack
sal_limit
private synonym
Work_city
public synonym
Plant_detail
public synonym
Jill
sal_limit
private synonym
Work_city
public synonym
Plant_detail
table owner
考虑一下下列SQL语句能否在这两个用户之间共享. SQL
能否共享
原因
select max(sal_cap) from sal_limit;
不能
每个用户都有一个private synonym - sal_limit , 它们是不同的对象
select count(*0 from work_city where sdesc like 'NEW%';
能
两个用户访问相同的对象public synonym - work_city
select a.sdesc,b.location from work_city a , plant_detail b where a.city_id = b.city_id
不能
用户jack 通过private synonym访问plant_detail 而jill 是表的所有者,对象不同
C.两个SQL语句中必须使用相同的名字的绑定变量(bind variables) ,例如: 第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值) a.select pin , name from people where pin = :blk1.pin; select pin , name from people where pin = :blk1.pin; b.select pin , name from people where pin = :blk1.ot_ind; select pin , name from people where pin = :blk1.ov_ind;
语句级优化
DBA配置优化
硬件优化一般来说语句级优化最能看出成效
特别是数据量大时,一个简单的绑定变量,就可以让效率提升几倍另外数据库结构的设计的好不好,也对SQL语句有很大的影响,设计不好的数据库,会造成SQL语句关联表过多,消耗资源过大而DBA对配置上调整,一般来说影响比较小,特别是对有经验的DBA来说,很少会去改配置的