不明白这是什么原理。。。由谁能解释一下?

aska_xxy 2004-08-11 03:45:07
看下面语句,系统查询时间显示是0。21秒:

SELECT '销售单' INV_TYPE,
d.name INV_DETAIL,
A.FORM_NO INV_NO,to_char(a.date_sale,'yyyy-mm-dd') INV_DATE,
upper(rtrim(ltrim(A.ACT_SALEPT))) SALEPT_ID,
upper(rtrim(ltrim(A.ACT_WAREHOUSE))) warehouse_id,
upper(rtrim(ltrim(b.item_no))) item_no,
a.form_no||b.sno inv_sno,
b.quantity qty_sale,
b.sale_AMT amt_sale,
b.sale_price sale_price,
b.minus_rate
from sale_form a, sale_item b,bi_temp_kind d,sale_item_map e
where a.form_status = '2'
and a.form_no = b.form_no
and a.salept_id = b.salept_id
and a.sale_cat = d.id
and b.salept_id =e.salept_id(+)
and b.item_id =e.item_id(+)
and d.kind = 'sale'
然后我把bi_temp_kind这张表去掉,因为我觉得他没什么用,去掉后如下:

SELECT '销售单' INV_TYPE,
A.FORM_NO INV_NO,to_char(a.date_sale,'yyyy-mm-dd') INV_DATE,
upper(rtrim(ltrim(A.ACT_SALEPT))) SALEPT_ID,
upper(rtrim(ltrim(A.ACT_WAREHOUSE))) warehouse_id,
upper(rtrim(ltrim(b.item_no))) item_no,
a.form_no||b.sno inv_sno,
b.quantity qty_sale,
b.sale_AMT amt_sale,
b.sale_price sale_price,
b.minus_rate
from sale_form a, sale_item b,sale_item_map e
where a.form_status = '2'
and a.form_no = b.form_no
and a.salept_id = b.salept_id
and b.salept_id =e.salept_id(+)
and b.item_id =e.item_id(+)

从我的感觉上这样的处理一定会增加查询速度,
然而,查询的结果是:5分钟后还没查出来....

其中:
sale_form 10万行左右的数据
sale_item 200万行左右的数据
sale_item_map 4万行
bi_temp_kind 10行

...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinya2003 2004-08-11
  • 打赏
  • 举报
回复
是的,因为d.kind='sale'就过滤了很多数据,其他的关联查询就会快多了.
baojianjun 2004-08-11
  • 打赏
  • 举报
回复
a.sale_cat = d.id
d.kind = 'sale'
這兩個條件過濾了很多數據
aska_xxy 2004-08-11
  • 打赏
  • 举报
回复
因为这个速度的差距太大,如果能明白这个问题,那么我们就能处理好多优化性能问题
sijian2001 2004-08-11
  • 打赏
  • 举报
回复
关注
bzszp 2004-08-11
  • 打赏
  • 举报
回复
通过这个表可能过滤掉了大量的数据

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧