【发布时间】:2010-11-22 13:37:57
【问题描述】:
我有一个类似的查询
DELETE from tablename where colname = value;
这需要很长时间才能执行。 可能是什么原因?我有一个关于 colname 的索引。
【问题讨论】:
-
您能否发布您的查询的解释计划(在 SQL*Plus 中,运行“SET AUTOTRACE ON EXPLAIN”然后您的查询)?
-
SQL> set autotrace on explain SQL> delete from tablename where nid = 1250626;已删除 1 行。执行计划------------------------------------------------ ---------- 0 DELETE STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1 Bytes=48) 1 0 DELETE OF 'tablename' 2 1 INDEX (UNIQUE SCAN) OF 'PK_tablename' (INDEX (UNIQUE) ) (Cost=1 Card=1 Bytes=48) 这是为了删除 1 行。原始查询有一个“>=”条件,直到大约 20 分钟我才能看到完成。即使使用'=',也需要一分钟以上
-
SELECT * FROM tablename WHERE nid = 1250626; 的性能如何?
-
它很快!执行只需几毫秒。!问题实际上是文森特提到的未索引的外键