A.
字符级的比较
:
当前被执行的语句和共享池中的语句必须完全相同
例如
7!8
和下列每一个都不同
7.)8
$+$7!))(8
7!8
B.
两个语句所指的对象必须完全相同
:
例如
用户 对象名 如何访问
Jack #++)(9$#,,)
0,(/+#,,)
+'$+(/+#,,)
Jill
sal_limit private synonym
Work_city public synonym
Plant_detail table owner
考虑一下下列
SQL
语句能否在这两个用户之间共享
.
"
能否共享 原因
#$+$):#+(.)
#++)8
不能 每个用户都有一个
(9$
#,,)&#++)
它们
是不同的对象,在不同的用
户名下,只能内部访问
#$+$/7;.)<0,
<5$$#'$#
+0$=1 >=8
能 两个用户访问相同的对象
(/+#,,)&
<0,
#$+$#'$#+.)
<0,
(+'$+
<5$$,'?,'
不能 用户
-0
通过
(/+
#,,)
访问
(+'$+
而
-++
是表的
所有者
对象不同
Synonym
:
C.
两个
SQL
语句中必须使用相同的名字的绑定变量
(bind variables)
例如:第一组的两个
"
语句是相同的
可以共享
而第二组中的两个语句是不
同的
即使在运行时
赋于不同的绑定变量相同的值
#$+$()$.)($(+$<5$$(?+0@(8
#$+$()$.)($(+$<5$$(?+0@(8
#$+$()$.)($(+$<5$$(?+0@'8
#$+$()$.)($(+$<5$$(?+0@9'8
二
.
优化方法:
1.
选择最有效率的表名顺序
(
只在基于规则的优化器中有效
)
评论