ITPub博客

首页 > 数据库 > Oracle > 一个简单的delete 优化

一个简单的delete 优化

原创 Oracle 作者:jidongzheng 时间:2009-01-06 10:00:28 0 删除 编辑

昨天在客户现场,同事一个简单的delete 语句,发现竟需要30s以上的时间,整个数据库资源占用也很高。

同事讲,对应的列已经创建索引了。

就检查了下。发现存在一个普遍的设计问题。

具体如下:

[@more@]

删除语句:

delete from t_a t where t.id= 40000;

检查表t_a,在id上创建了索引。

执行计划也会使用这个索引。但执行起来就很慢。

刚开始以为这个索引的值分散,就把索引修改为反向索引。

执行计划是比一般索引快。但总的执行时间没有减少太多。

只好去设置sql trace.

结果发现,当执行上述delete 时,除删除t_a外,还有一个删除

t_b表的语句。

所以,明白是由于这个表是其它表的主表。因为,当删除主表时,会级联删除次表。导致删除慢。

在次表上对应的column上创建索引,整个删除只需要1s就可以完成。

从此,也可以看出在使用关联时,不应只关注主表,次表也是要注意的。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/197458/viewspace-1015738/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle SQL调整一例
请登录后发表评论 登录
全部评论
  • 博文量
    152
  • 访问量
    724077