楼主: mangguo6357

一段sql 执行效率的疑惑。

[复制链接]
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:04:58
21#
发表于 2008-4-18 18:03 | 只看该作者
rebuild your index and study your executing plan

使用道具 举报

回复
论坛徽章:
11
授权会员
日期:2007-07-08 18:54:592009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:蛇
日期:2008-10-24 16:46:51奥运会纪念徽章:现代五项
日期:2008-10-24 13:26:49生肖徽章2007版:羊
日期:2008-04-17 18:05:112008新春纪念徽章
日期:2008-02-13 12:43:03生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
22#
发表于 2008-4-18 18:34 | 只看该作者
不要toad查看执行计划,这种工具可能会有bug.

set autotrace traceonly看看

1、如果还是FTS,索引是否创建的合适?统计信息是否正确?

2、这个两个参数是否需要调整
optimizer_index_caching   
optimizer_index_cost_adj

3、hint

使用道具 举报

回复
论坛徽章:
14
数据库板块每日发贴之星
日期:2005-05-15 01:01:24生肖徽章2007版:鸡
日期:2009-11-17 15:01:30生肖徽章2007版:马
日期:2009-10-22 08:53:062009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2008-12-28 01:01:02ERP板块每日发贴之星
日期:2008-11-29 01:01:04数据库板块每日发贴之星
日期:2008-04-25 01:01:54生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
23#
发表于 2008-4-19 10:13 | 只看该作者
conn inv/inv
给出下面结果
select a.table_name,a.blocks,a.num_rows
from user_tables  a
where a.table_name=upper('mtl_categories_b')

select count(*) from  mtl_categories_b

select b.table_name,
       b.num_rows,
       b.index_name,
       b.avg_leaf_blocks_per_key,
       b.avg_data_blocks_per_key,
       b.clustering_factor
  from user_indexes b
where b.table_name = upper('mtl_categories_b')
   and b.index_name = 'MTL_CATEGORIES_B_U1'

使用道具 举报

回复
论坛徽章:
0
24#
发表于 2008-4-19 12:33 | 只看该作者
原帖由 mangguo6357 于 2008-4-18 15:12 发表
遇到这样一个问题,请高手指点。

    同一台机器上有DEV, PRD两个环境,PRD是从DEV克隆过去的,有一段SQL,在DEV 下执行很快,但是在PRD下面却非常慢。 用toad分别查看其执行计划,发现PRD(速度慢的)上对某个table(该table 有建index)执行了全表扫描,而DEV上却没有执行全表扫描,为什么会这样呢,该如何解决这种问题? 谢谢!


1。 表和索引的结构相同,但如果两个环境的配置参数不同,表的数据量不同,或是表和索引的统计数据不同,那么优化器产生的执行计划也会不同。这是由于优化器要靠这些因素来共同决定何种执行计划是消耗最低的。
2。wip_requirement_operations_v 可能是一个view而不是table。其内容是什么?
3。为什么在你的语句里没看到mtl_categories_b表?

使用道具 举报

回复
论坛徽章:
9
授权会员
日期:2007-06-18 19:35:12会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:牛
日期:2009-05-18 10:35:46祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:鸡
日期:2009-11-29 02:28:14ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
25#
发表于 2008-4-19 13:19 | 只看该作者
另把你作分析的语句贴出来看一下!

重建表,调整表的存储情况,安全点的方式:
1,alter table table_name move;
   然后,重建表上的所有索引.
2,使用oracle online redefine table功能;

感觉上面问题,可能是分析出了问题,或者是表,索引存储结构有问题

使用道具 举报

回复
论坛徽章:
14
数据库板块每日发贴之星
日期:2005-05-15 01:01:24生肖徽章2007版:鸡
日期:2009-11-17 15:01:30生肖徽章2007版:马
日期:2009-10-22 08:53:062009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2008-12-28 01:01:02ERP板块每日发贴之星
日期:2008-11-29 01:01:04数据库板块每日发贴之星
日期:2008-04-25 01:01:54生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
26#
发表于 2008-4-19 14:21 | 只看该作者
原帖由 mangguo6357 于 2008-4-18 16:19 发表


做了分析了。
我把这段代码贴出来:

SELECT req.wip_entity_id,
       req.concatenated_segments comp_item,
       req.item_description comp_item_desc,
       req.item_primary_uom_code p_uom,
       req.required_quantity p_qty,
       req.attribute2 s_uom,
       TO_NUMBER(req.attribute3) * wdj.start_quantity s_qty,
       req.attribute3 s_per_qty,
       req.quantity_per_assembly,
       mca.segment1 prod_type,
       mca.segment5 grade,
       mca.segment4 SIZES,
       mca.segment6 shape,
       mca.segment7 color,
       req.attribute5 comp_remarks,
       req.item_description item_desp
  FROM mtl_item_categories mic,
       mtl_categories mca,
       wip_requirement_operations_v req,
       wip_discrete_jobs wdj
WHERE req.inventory_item_id = mic.inventory_item_id
   AND wdj.wip_entity_id = req.wip_entity_id
   AND mic.category_id = mca.category_id
   AND mic.organization_id = 112
   AND req.wip_entity_id = 8454


这些table都是oralce ERP 中标准的table或者view。并且最奇怪的现象是 如果把上面这段代码中的 最后一句 AND req.wip_entity_id = 8454 去掉,再看执行计划,又不会全表扫描,太奇怪了。


正好相反,没有最后一个条件,铁定应该走FTS,建议你对wip inv等关键schema作一次分析

使用道具 举报

回复
论坛徽章:
14
数据库板块每日发贴之星
日期:2005-05-15 01:01:24生肖徽章2007版:鸡
日期:2009-11-17 15:01:30生肖徽章2007版:马
日期:2009-10-22 08:53:062009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2008-12-28 01:01:02ERP板块每日发贴之星
日期:2008-11-29 01:01:04数据库板块每日发贴之星
日期:2008-04-25 01:01:54生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
27#
发表于 2008-4-19 16:58 | 只看该作者
难以置信,你的mtl_categories_b你的这个表的fts居然cost只有2,印象中这个表不可能这么少的数据

请给出我上面的那些sql结果

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
28#
 楼主| 发表于 2008-4-19 20:17 | 只看该作者
呵呵,感谢楼上各位的关注与热心帮助。星期一去公司了再把相关内容贴出来。

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2008-03-13 10:32:44生肖徽章2007版:鸡
日期:2008-04-03 18:55:51数据库板块每日发贴之星
日期:2008-04-21 01:01:58奥运会纪念徽章:拳击
日期:2008-06-14 10:29:372014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
29#
发表于 2008-4-19 22:50 | 只看该作者
大伙远程遥控维护,好极了:)

使用道具 举报

回复
论坛徽章:
19
授权会员
日期:2007-08-25 20:02:41会员2007贡献徽章
日期:2007-09-26 18:42:10BLOG每日发帖之星
日期:2008-11-13 01:01:05
30#
发表于 2008-4-20 08:48 | 只看该作者
数据不一样大?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表