【发布时间】:2021-02-04 15:21:41
【问题描述】:
我们有一张没有太多数据的表。该表有 3 个分区,我们只删除一个分区中的数据。 从表 AB 分区(A)中删除,其中 id=value; 这里 id 也有一个索引,但删除仍然很慢。 id的数据类型为varchar2,值为number。
请帮助我理解为什么删除语句很慢。
【问题讨论】:
-
将
value转换为字符串将消除隐式转换的需要。在 DELETE 期间调用的表上是否有触发器?是否有任何子表与您使用外键删除的记录相关联?如果有 FK,子表中的列是否被索引? -
我建议包含一个执行计划,甚至是一个 autotrace/sql 监控报告 - 否则,您是在要求我们猜测您的 DELETE 为何缓慢
-
表中有多少行,使用 where 子句将删除多少行以及您正在使用的删除语句是什么,是否只是 DELTE from table where col1 = 'some value'或者它正在与其他表连接。
标签: oracle plsql query-optimization