刚开始指系统初始使用
表结构及索引如下:
create table TB_COST
(
  ORGCODE          VARCHAR2(8) not null,
  ORGNAME          VARCHAR2(50) not null,
  INSURECODE       VARCHAR2(20) not null,
  ICCODE           VARCHAR2(12) not null,
  PRESCRIPTIONCODE VARCHAR2(20) not null,
  INVOICECODE      VARCHAR2(30) not null,
  PNAME            VARCHAR2(16) not null,
  COST             NUMBER(18,4) default 0 not null,
  LASTDATE         DATE not null,
  OPRCODE          VARCHAR2(16) not null,
  TFID             VARCHAR2(8),
  TRANSFLAG        VARCHAR2(1) default 0 not null,
  ID               VARCHAR2(8))tablespace user1
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );create index SHOP1 on TB_COST(PRESCRIPTIONCODE, LASTDATE)
  tablespace user1
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
操作是:简单的插入数据和查询数据,现在的状况是,每个月汇总时,统计很慢,2万条记录大概要十几分钟
请大侠指点

解决方案 »

  1.   

    你应该给你经常查询的字段建立索引!!!(where 后的字段)
    这样速度就比较快了
      

  2.   

    1、Create Index 可以明显改善select速度
    2、Table 的 Init / Next 空间要建足够大,这样 Table 的 Segment 不会多,也可提高速度
      

  3.   

    “表记录我按月进行转存,记录数保持在2万条左右”
    不知道楼主是怎样实现的,但是delete之后再insert,
    对全表扫描的效率没有任何作用,因为表的高水位标志并不会降低存在两种可能性:
    1。需要使用索引,但是进行了全表扫描,需要analyze表
    2。需要全表扫描,但是表有严重碎片问题,需要move表
    建议楼主观察执行计划,然后analyze表,看执行计划是否会发生变化,可以考虑调整程序设计Table 的 Init / Next 参数是extent尺寸,建大一些可以避免大量insert时的频繁空间分配,
    对提高查询效率没有作用
      

  4.   

    很有可能表空间碎片太多.你可以试一下重建索引.以及analyze table
      

  5.   

    将每月汇总的SQL拿来看看.