首页 > 开发 > 综合 > 正文

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

2024-07-21 02:37:57
字体:
来源:转载
供稿:网友

  有两个主、从表 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倍以上。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表