ORACLE单表查询,表60个字段,2000万条记录,有索引
程序页面上XA与Y均为条件,R为符合条件的COUNT数,
该程序表示符合各种不同条件组合的COUNT数结果集
具体一点:
比如XA1是北京,XA2是河北,XA ALL是北京+河北
Y1是商品房,Y2是二手房
R1就是北京的商品房,R2是河北的商品房这样子
     XA 1  ,XB 1  ,XC 1
     XA 2  ,XB 2  ,XC 2
     XA ALL,XB ALL,XC ALL
 Y1  R1    ,R2    ,R3
 Y2  R4    ,R5    ,R6
 Y3  R7    ,R8    ,R9现在的做法是在程序中做循环对DB检索,检索一次返回一个R请问何种优化可以有效的提升速度?
是对ORACLE参数进行优化
比如扩大数据表空间;设置段盘区的初始大小,增长大小,增长幅度;增大用户临时空间
还是做存储过程减少交互次数
还是其它方法?

解决方案 »

  1.   

    修正下,应该是这样
        XA 1  ,XB 1  ,XC 1 
        XA 2  ,XB 2  ,XC 2 
        XA ALL,XB ALL,XC ALL 
    Y1  R11    ,R12    ,R13 
        R14    ,R15    ,R16 
        R17    ,R18    ,R19 
    Y2  R21    ,R22    ,R23 
        R24    ,R25    ,R26 
        R27    ,R28    ,R29 
    Y3  R31    ,R32    ,R33 
        R34    ,R35    ,R36 
        R37    ,R38    ,R39 R11是北京的商品房
    R14是河北的商品房
    R17是北京+河北的商品房
      

  2.   

    X和Y都是表的字段,XA1,XB2等是X可能的值,Y同理
      

  3.   

    junying2yu:索引已经加了,单表查询怎么优化,能说具体点吗?herowangzhen:跑了2年了,DB结构肯定不能动的。
      

  4.   

    1. 数据库级别的优化,最简单有效的方式是5楼兄弟的建议,对这个表设置分区“partition”。2. SQL级别的优化,建议用一个group by查询,不了解你具体的情况,所以不能肯定有多大提升。具体做法是一次把所有的count都取出,再用程序或者报表工具转化成你需要的格式。
    select X, Y, count(*) from table group by X, Y
      

  5.   

    oracle的优化查询有很多,索引是少不了的,
    而且与表的设计和较的关系