oracle 语句优化
时间:2011-09-23
来源:互联网
烦请高手赐教,下面的语句查询是太慢了,怎么才能变得快一些呢?
SELECT msi.inventory_item_id, msi.segment1 AS item_no, bic.operation_seq_num,
msi1.inventory_item_id AS main_id, msi1.segment1 AS mb_item,
msi2.segment1 sub_item, bic.component_quantity AS qty,
brd.component_reference_designator AS LOCATION, msi1.description,
msi2.description sub_desc
FROM inv.mtl_system_items msi,
bom.bom_bill_of_materials bom,
bom.bom_inventory_components bic,
inv.mtl_system_items msi1,
bom_reference_designators brd,
inv.mtl_system_items msi2,
(SELECT * FROM bom.bom_substitute_components WHERE NVL (acd_type, 1) <> 3) bsc
WHERE msi2.inventory_item_id(+) = bsc.substitute_component_id
AND bic.component_sequence_id = bsc.component_sequence_id(+)
AND bic.component_sequence_id = brd.component_sequence_id(+)
AND NVL (brd.acd_type, 1) <> 3
AND bom.common_bill_sequence_id = bic.bill_sequence_id
AND bic.implementation_date IS NOT NULL
AND msi1.inventory_item_id = bic.component_item_id
AND msi1.organization_id = msi.organization_id
AND msi2.organization_id = msi.organization_id
AND bom.organization_id = msi.organization_id
AND bom.assembly_item_id = msi.inventory_item_id
and msi.organization_id in(24,748,87)
AND msi.segment1 = '606-X0023-040'
AND brd.component_reference_designator = 'U29'
AND NVL(bic.disable_date, sysdate + 1) >=( SELECT NVL (MIN (rev.effectivity_date), sysdate)
FROM inv.mtl_item_revisions rev
WHERE rev.inventory_item_id = bom.assembly_item_id
AND rev.organization_id = bom.organization_id
AND rev.revision > '000')
AND bic.effectivity_date <(select nvl (min (rev.effectivity_date), sysdate)
FROM inv.mtl_item_revisions rev
WHERE rev.inventory_item_id = bom.assembly_item_id
AND rev.organization_id = bom.organization_id
AND rev.revision > '000')
SELECT msi.inventory_item_id, msi.segment1 AS item_no, bic.operation_seq_num,
msi1.inventory_item_id AS main_id, msi1.segment1 AS mb_item,
msi2.segment1 sub_item, bic.component_quantity AS qty,
brd.component_reference_designator AS LOCATION, msi1.description,
msi2.description sub_desc
FROM inv.mtl_system_items msi,
bom.bom_bill_of_materials bom,
bom.bom_inventory_components bic,
inv.mtl_system_items msi1,
bom_reference_designators brd,
inv.mtl_system_items msi2,
(SELECT * FROM bom.bom_substitute_components WHERE NVL (acd_type, 1) <> 3) bsc
WHERE msi2.inventory_item_id(+) = bsc.substitute_component_id
AND bic.component_sequence_id = bsc.component_sequence_id(+)
AND bic.component_sequence_id = brd.component_sequence_id(+)
AND NVL (brd.acd_type, 1) <> 3
AND bom.common_bill_sequence_id = bic.bill_sequence_id
AND bic.implementation_date IS NOT NULL
AND msi1.inventory_item_id = bic.component_item_id
AND msi1.organization_id = msi.organization_id
AND msi2.organization_id = msi.organization_id
AND bom.organization_id = msi.organization_id
AND bom.assembly_item_id = msi.inventory_item_id
and msi.organization_id in(24,748,87)
AND msi.segment1 = '606-X0023-040'
AND brd.component_reference_designator = 'U29'
AND NVL(bic.disable_date, sysdate + 1) >=( SELECT NVL (MIN (rev.effectivity_date), sysdate)
FROM inv.mtl_item_revisions rev
WHERE rev.inventory_item_id = bom.assembly_item_id
AND rev.organization_id = bom.organization_id
AND rev.revision > '000')
AND bic.effectivity_date <(select nvl (min (rev.effectivity_date), sysdate)
FROM inv.mtl_item_revisions rev
WHERE rev.inventory_item_id = bom.assembly_item_id
AND rev.organization_id = bom.organization_id
AND rev.revision > '000')
作者: luckysli 发布时间: 2011-09-23
检查一下各个字段的索引情况。
用工具查看执行计划,慢慢调吧。
看似比较复杂 呢。呵呵。
用工具查看执行计划,慢慢调吧。
看似比较复杂 呢。呵呵。
作者: yixilan 发布时间: 2011-09-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28