各位大侠好,有 一个问题,我这边需要一条查询语句,从千万条记录数据中快速查询,主要完成如下要求:请对测试数据库做优化,至少确保以下查询能够在尽量短的时间内完成:
1、查询特定线路或总线路生产材料的总方量;
2、查询特定时间内特定线路的所有生产记录。

解决方案 »

  1.   

    --------------------------------------------------------------------------------------------------------------------------------
    说明:
    使用sys用户登录数据库,执行:alter system set deferred_segment_creation=false;
    下载附件users.sql,将其中数据库的存放路径tempfile和datafile做适当的修改,用sys用户执行users.sql脚本,会建立一个名为sun的用户,密码123456;
    使用sun用户登陆数据库,导入数据库备份dmp文件(数据库文件自建)。
        关于数据库表的几点解释:
    line_temp是线路表,接近1000条数据。line字段是线路名,lineno是线路名对应的编号,该编号在bhzdata中字段名为line_id;
    bhzdata是数据表,接近860万条数据。f_fangliang字段表示设备每次生产材料的方量,为浮点值,f_chuliaoshijian表示生产材料的时间。
    create temporary  tablespace railway_temp
        tempfile 'c:\oracle\datafile\railway_temp.dbf'
        size 1024m 
        autoextend on next  50m maxsize  20480m extent management local ;create 
        tablespace railway_sys 
        logging 
        datafile 'c:\oracle\datafile\railway_sys.dbf'
        size 2048m reuse autoextend 
        on next  10240k maxsize  32767m extent management local 
        segment space management  auto create user sun 
      identified by "123456" 
      default tablespace railway_sys 
      temporary tablespace railway_temp
      profile default;
     
    grant connect to sun;
    grant dba to sun;grant unlimited tablespace to sun;