提高查询主、从表速度的一个方法

发表于:2007-06-22来源:作者:点击数: 标签:
有两个主、从表 main_tab,detail_tab 主表记录大概是600多万条,从表记录大概2000万条,两表相互关联的字段有4个: prod_id, --产品编号 yyyymmdd, --日期 paper_no, --单号 io --进出代号 另外在主表上还有一个code字段标识单据的有效性, 如果想查出某一段

   
  有两个主、从表 main_tab,detail_tab
  主表记录大概是600多万条,从表记录大概2000万条,两表相互关联的字段有4个:
     prod_id,     --产品编号
     yyyymmdd,     --日期
     paper_no,     --单号

     io        --进出代号
     
  另外在主表上还有一个code字段标识单据的有效性,
   
  如果想查出某一段时间的有效的单据中(或者某些产品)的明细资料,一般的做法:
     select 所需字段
      from detail_tab a,main_tab b
      where a.prod_id = b.prod_id
       and a.yyyymmdd = b.yyyymmdd
       and a.paper_no = b.paper_no
       and a.io = b.io
       and b.yyyymmdd = '指定日期'
       and a.io = '进仓'
       and b.code = '有效的';
       
  这个查询的速度会因为这两个表过于巨大而非常的缓慢,
   
  现在有一个解决办法,就是给两个表都加上条件,即使是两个表关联的字段也加:
     select 所需字段
      from detail_tab a,main_tab b
      where a.prod_id = b.prod_id
       and a.yyyymmdd = b.yyyymmdd
       and a.paper_no = b.paper_no
       and a.io = b.io
       and b.yyyymmdd = '指定日期'
       and a.yyyymmdd = '指定日期'
       and a.io = '进仓'
       and b.io = '进仓'
       and b.code = '有效的';
       
  这样的速度要比前一种快了至少10倍以上。

原文转自:http://www.ltesting.net