|  | 
| 谢谢两位版主答复,我清楚了,以前我增加提示都没有认为是在使用CBO, 因为我觉得CBO是必须要对表分析了以后才起作用的, 并且每次通过这种方式也可以达到我按照自己的要求执行语句的目的,所以造成了一个错误的认识,现在清楚了,其实只要增加了提示,除了rule提示,都是在使用CBO,但没有分析过表也没有关系,因为oracle会使用缺省的数据的.对于分析了一部分表,而其它的没有分析的话,是很严重的问题,会导致oracle在第一次执行语句的时候分析其它的表的,这个我倒清楚,所以我一直以来都不分析任何的表,就是害怕出现这种情况,同时,通过增加提示来达到选择计划的目的,这么看来,这样做还是不正确的,因为ORACLE会对提示不涉及到的部分,采用CBO,并且使用缺省的数据作为判断的依据. 综合来讲,再补充一点:
 1: 使用hint肯定会使用CBO,执行计划以hint为主,hint之外的,由CBO决定
 2: 对于hint之外的那些,是需要表的分析数据的,对于没有分析过的数据,oracle会使用缺省的分析数据的 (当然不一定可靠)
 3: 如果使用了CBO,而仅仅分析了部分的表,会导致oracle在第一次执行语句的时候分析其它该语句所涉及到的表,严重影响语句执行速度
 4: 对于绑定变量与CBO同时使用的问题,在8i中可能会出现一些偏差的问题,但在以后版本中,oracle增加了一些新的因素进去.
 
 再次感谢各位的回复.
 | 
 |