SQL 优化_3 统计数据改善执行计划

来源:互联网 发布:windows查看显卡 编辑:程序博客网 时间:2024/04/24 01:30

我比较喜欢的两个方法:
1.dbms_stats.gather_schema_stats('SCOTT'); --仅给出方案名即可。
这里虽然只写了一个参数,但是不代表过程原型是这样的,因为其他参数在这个工具包中都有默认设置不用写即可。下面给出oracle官方给出的该过程的详细描述:

DBMS_STATS.GATHER_SCHEMA_STATS (    ownname          VARCHAR2,    estimate_percent NUMBER   DEFAULT to_estimate_percent_type                                                 (get_param('ESTIMATE_PERCENT')),    block_sample     BOOLEAN  DEFAULT FALSE,    method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),   degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),    granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),    cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),    stattab          VARCHAR2 DEFAULT NULL,    statid           VARCHAR2 DEFAULT NULL,    options          VARCHAR2 DEFAULT 'GATHER',    objlist          OUT      ObjectTab,   statown          VARCHAR2 DEFAULT NULL,    no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (                                     get_param('NO_INVALIDATE')),  force             BOOLEAN DEFAULT FALSE);   DBMS_STATS.GATHER_SCHEMA_STATS (    ownname          VARCHAR2,    estimate_percent NUMBER   DEFAULT to_estimate_percent_type                                                 (get_param('ESTIMATE_PERCENT')),    block_sample     BOOLEAN  DEFAULT FALSE,    method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),    degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),    granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),    cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),    stattab          VARCHAR2 DEFAULT NULL,    statid           VARCHAR2 DEFAULT NULL,    options          VARCHAR2 DEFAULT 'GATHER',    statown          VARCHAR2 DEFAULT NULL,    no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (                                     get_param('NO_INVALIDATE'),    force            BOOLEAN DEFAULT FALSE);
可以看出过程原型官方给了两个,还是很复杂的,不过我们可以简单的使用。

2.dbms_stats.gather_table_stats('SCOTT','DEPT');--给出用户名和表名即可。
同样给出官方的过程原型:

DBMS_STATS.GATHER_TABLE_STATS (   ownname          VARCHAR2,    tabname          VARCHAR2,    partname         VARCHAR2 DEFAULT NULL,   estimate_percent NUMBER   DEFAULT to_estimate_percent_type                                                 (get_param('ESTIMATE_PERCENT')),    block_sample     BOOLEAN  DEFAULT FALSE,   method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),   degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),   granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),    cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),   stattab          VARCHAR2 DEFAULT NULL,    statid           VARCHAR2 DEFAULT NULL,   statown          VARCHAR2 DEFAULT NULL,   no_invalidate    BOOLEAN  DEFAULT  to_no_invalidate_type (                                     get_param('NO_INVALIDATE')),   force            BOOLEAN DEFAULT FALSE);
虽然原型很复杂,可以简单来使用。
3.要更加深入的了解该包的其他过程,可以参考oracle官方文档仔细研究。


原创粉丝点击