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