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。

  • 相关阅读:
    PHPCMS实现文章置顶功能的方法
    phpcms v9栏目列表调用每一篇文章内容方法1
    phpcms v9使用GET调用指定id文章内容、页面数据方法
    PHPCMS GET标签使用
    PHPCMS栏目调用2
    PHPCMS二层栏目调用
    PHPCMS get当中使用limit
    phpcms栏目调用
    WAMP学习日记之:Apache发布php网站
    用Apache实现一个ip虚拟多个web站点
  • 原文地址:https://www.cnblogs.com/yinliang/p/13577564.html
Copyright © 2011-2022 走看看