• 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。

  • 相关阅读:
    [转贴]八大排序算法总结
    使用NPOI获取Excel表格数据
    TraceSource的使用以及日志设计
    针对windows server X64系统的Excel文件读取。
    WCF服务编程基础
    WCF中配置文件解析

    Reading : Realtime allFrequency shadows in Dynamic Scenes
    suspect reading paper!
    Association, Composition, Aggregation(转)
  • 原文地址:https://www.cnblogs.com/yinliang/p/13577564.html
Copyright © 2020-2023  润新知