12
返回列表 发新帖
楼主: zjusxzj

一个delete 的优化 大家帮忙想想换个写法

[复制链接]
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
11#
发表于 2005-1-26 10:54 | 只看该作者
最初由 zjusxzj 发布
[B]

可是表很大 global的话 要是上层频繁访问的话不太好! [/B]


何以见得?你full scan local index性能只有更差,
如果是按偶建议的方法创建索引的话,
将会执行的是index range global index,性能要好得多。

使用道具 举报

回复
论坛徽章:
5
授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2005-11-01 10:17:33铁扇公主
日期:2006-04-13 11:43:07会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
12#
 楼主| 发表于 2005-1-26 11:45 | 只看该作者
最初由 xzh2000 发布
[B]

何以见得?你full scan local index性能只有更差,
如果是按偶建议的方法创建索引的话,
将会执行的是index range global index,性能要好得多。 [/B]



这一个sql是在数据提取过程中用的
我的上层工具好多sql 走  index range local index

我下午先做做实验看!

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
38
ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14现任管理团队成员
日期:2012-10-18 17:11:21版主4段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23
13#
发表于 2005-1-26 12:07 | 只看该作者
我的建议是:
在total表的obj_inst, period_start, period_stop字段建组合全局索引,因为原先那个建在5个字段上的索引不仅索引自身很大而且对你的查询帮助不大,因为索引里没有obj_inst字段!
在temp表的obj_inst, period_start, period_stop字段也建一个组合索引,这样oracle或许会把两个表的这两个索引连接起来查询,应该会有一定帮助。
没法试验,瞎说的。记得搞掂后贴出来让我们学学哦

使用道具 举报

回复
论坛徽章:
168
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-12-05 16:08:56ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41设计板块每日发贴之星
日期:2011-07-22 01:01:02ITPUB官方微博粉丝徽章
日期:2011-06-30 12:30:16管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
14#
发表于 2005-1-26 13:09 | 只看该作者
最初由 xzh2000 发布
[B]

何以见得?你full scan local index性能只有更差,
如果是按偶建议的方法创建索引的话,
将会执行的是index range global index,性能要好得多。 [/B]


另外如果版本是9i或以上,
不妨试试把索引建在db_block_size较大的表空间上减少i/o.

使用道具 举报

回复
论坛徽章:
5
授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2005-11-01 10:17:33铁扇公主
日期:2006-04-13 11:43:07会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
15#
 楼主| 发表于 2005-1-26 14:46 | 只看该作者
改变了index 位置后 (period_start,obj_inst,period_stop,relasced_bsc)
SQL> DELETE FROM NOK_NMC.NOK_BTS_HOUR_PER_TOTAL
  2  WHERE
  3  (obj_inst, period_start, period_stop) IN (SELECT obj_inst, period_start
  4  period_stop FROM wz_nok_omcr3_upload.NOK_BTS_HOUR_PER_TEMP A);

已删除252行。

已用时间:  00: 00: 00.02

Execution Plan
----------------------------------------------------------
   0      DELETE STATEMENT Optimizer=CHOOSE (Cost=280 Card=19 Bytes=14
          82)

   1    0   DELETE OF 'NOK_BTS_HOUR_PER_TOTAL'
   2    1     NESTED LOOPS (Cost=280 Card=19 Bytes=1482)
   3    2       VIEW OF 'VW_NSO_1' (Cost=276 Card=1 Bytes=28)
   4    3         SORT (UNIQUE) (Cost=276 Card=1 Bytes=15)
   5    4           TABLE ACCESS (FULL) OF 'NOK_BTS_HOUR_PER_TEMP' (Co
          st=256 Card=1546 Bytes=23190)

   6    2       PARTITION RANGE (ITERATOR)
   7    6         INDEX (RANGE SCAN) OF 'NOK_BTS_HOUR_PER_TOTAL_INDEX'
           (NON-UNIQUE) (Cost=4 Card=19430125 Bytes=971506250)

我有三个相同的user  同样做这样一个sql但是另外两个不慢 我刚开始考虑是有什么等待事件
查出来是全表扫描的等待
我刚开始是假设他们的sql是没有差别的 先在看来 可能他们的程序是有差别的!

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-11-04 13:13:52会员2006贡献徽章
日期:2006-04-17 13:46:34在线时间
日期:2006-12-24 04:01:01会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
16#
发表于 2005-1-27 09:09 | 只看该作者
效果如何?快了些?

使用道具 举报

回复

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

本版积分规则 发表回复

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