zoukankan      html  css  js  c++  java
  • oracle查询使用order by变慢的问题

    oracle版本10.1.0

    一条简单的sql,在pl/sql里执行,表里共有20多w条记录:

    select * from table (1s)

    select * from table order by date_report desc (18s)

    加上order by date_report desc后竟要耗费18秒,这样的速度我想没有客户能接受。

    开始优化:

    首先在表里建立date_report的索引,发现速度没有多大的提升

    查了一通资料,通过sqlplus查询得知oracle默认了参数(排序)sort_area_size是64k,是不是太小了,加大到65M,重启数据库;

    SQL> show parameter sort_area_size;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    sort_area_size                       integer     65536

    SQL>alter system set sort_area_size=65535000 scope=spfile;

    再试,没反应还是18秒,哪里出现问题了?

    show parameter sort_area_size查看,对的,分明是10M的大小;

    继续查资料发现oracle里默认将参数workarea_size_policy=auto,此时sort_area_size是不起作用的,于是继续设置参数:


    SQL> show parameter workarea_size_policy;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    workarea_size_policy                 string      AUTO

    SQL>alter system set workarea_size_policy=MANUAL scope=spfile;

    再次重启DB,刷新sql,好了速度飞快2s内打开sql。

  • 相关阅读:
    大爽Python入门教程 3-6 答案
    大爽Python入门教程 2-5 *拓展实践,对比与思考
    大爽Python入门教程 3-1 布尔值: True, False
    大爽Python入门教程 3-2 条件判断: if...elif..else
    企业微信获取code
    python inspect模块
    数据仓库之数据质量建设(深度好文)
    seleniumwire
    Jacoco增量代码覆盖率
    git对已经提交过的文件添加到.gitignore
  • 原文地址:https://www.cnblogs.com/yinliang/p/13577564.html
Copyright © 2011-2022 走看看