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。

  • 相关阅读:
    NSSM 将jar 安装成windows服务
    Spark Streaming
    记录一次oracle的坑 ORA08103
    POJ 3669 Meteor Shower
    LeetCode题目1~3
    POJ 3723 Conscription 并查集 + Kruskal
    LeetCode题目4:Sort List
    C++实现的快速排序
    C++实现的一段希尔排序代码
    2014大众点评Hackathon参赛感想
  • 原文地址:https://www.cnblogs.com/yinliang/p/13577564.html
Copyright © 2011-2022 走看看