怎么高效查询SQL语句

如何高效查询SQL语句
表A
  商品 日期 序列号 方式 仓库  
  001 2011-1-1 0000001 入库 A
  001 2011-1-1 0000002 入库 A
  001 2011-1-1 0000003 入库 A
  001 2011-1-1 0000004 入库 A
  001 2011-1-1 0000005 入库 A
  001 2011-1-1 0000006 入库 A

表B
  商品 日期 序列号 方式 仓库
  001 2011-2-1 0000001 采购退库 A

表C
  商品 日期 序列号 方式 仓库
  001 2011-5-1 0000003 销售出库 A
  001 2011-7-1 0000003 销售出库 A
  001 2011-5-1 0000004 销售出库 A




表D
  商品 日期 序列号 方式 仓库
  001 2011-6-1 0000003 销售退库 A


在库:是入库的时候;销售退库 后也在库存
没有在库是:采购退库和销售出库

现在的问题是如何实现高效查询每个串号的状态以及是否在库








------解决方案--------------------
SQL code
select a.*,
(case when b.序列号 is not null then 销售退库
    when c.序列号 is not null then 销售出库
else 在库 end)
from 表A a left join 表B b on a.序列号=b.序列号
left join 表C c on a.序列号=c.序列号

------解决方案--------------------
前提:所有的销售出库、销售退库、采购退库都是基于“采购入库”主表数据;
我也觉得所有的后续分析都是基于2楼的业务逻辑进行处理,至于性能我也不太清楚哈,只知道left join是比较耗费性能的,同时需要考虑时间参数、数据异常等因素。
探讨
SQL code
select a.*,
(case when b.序列号 is not null then 销售退库
when c.序列号 is not null then 销售出库
else 在库 end)
from 表A a left join 表B b on a.序列号=b.序列号
left join 表C c on a.序列号=c.序列号