数据库中有一个表,数据量不过也就600来条数据,但是对表进行插入和查询的时候相当慢。我truncate table mytable,将高水位线置零后,还是比较慢。不知道什么原因。我在对数据进行插入的时候看了一下,估计是2秒钟插入一条数据。用select * from M_MID_BUSI_MAIN_PRO_INCO_MONI where BAL_M < 0查询的时候,估计要10多秒。不知道什么原因,望高手指点。

解决方案 »

  1.   


    1。 数据库性能怎么样?
    2。 把表删了,在重新创建一下看看..------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  2.   

    首先感谢各位的及时响应,我看了一下执行计划,如贴图,我对这个执行计划没有怎么深入了解,麻烦给我给我看看这个执行计划有没有问题
    explain plan for 
     select * from M_MID_BUSI_MAIN_PRO_INCO_MONI where BAL_M < 0
     select * from table(dbms_xplan.display); 
    返回结果:
    Plan hash value: 2780848249---------------------------------------------------------------------------------------------------
    | Id  | Operation         | Name                          | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |                               |     1 |    60 |   644K  (2)| 02:08:50 |
    |*  1 |  TABLE ACCESS FULL| M_MID_BUSI_MAIN_PRO_INCO_MONI |     1 |    60 |   644K  (2)| 02:08:50 |
    ---------------------------------------------------------------------------------------------------
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       1 - filter("BAL_M"<0)
      

  3.   

    create table tablename_bak as (select * from tablename);
    truncate table tablename;
    insert into tablename (select * from tablename_bak);
    drop table tablename_bak;
    alter index index_name rebuild;
      

  4.   

    感觉很奇怪,我从建表,然后将以前表中的几百条数据导入进去,这个时候查询很快了。但是如果这个时候我将表中的数据删除了,然后再跑后台ETL往表中写数据的时候发现,我将8月份的数据通过ETL job写入表时很快,job跑完后表中数据有675条,此时我在讲9月份的数据也通过这个job写入表,此时速度就比较慢了。要说明的是两次跑的job都是同一个job,同样的业务处理,唯一不同的就是时间不同。
      

  5.   

    把BAL_M字段建一个索引create index index_BAL_M on M_MID_BUSI_MAIN_PRO_INCO_MONI(BAL_M)
      

  6.   


    在job里面的insert语句后面加上commit看看?