我要问:
DELETE from tablename where colname = value;
which takes awfully long time to execute. What could be the reason? I have an index on colname.
我要问:
DELETE from tablename where colname = value;
which takes awfully long time to execute. What could be the reason? I have an index on colname.
您的询问需要很长的时间,原因可以有若干解释:
SELECT NULL FROM tablename WHERE colname=:value FOR UPDATE NOWAIT
,ON DELETE TRIGGER
that does additional work,UNINDEXED REFERENCE CONSTRAINTS
pointing to this table (there is a script from AskTom that will help you determine if such unindexed foreign keys exist).您的表格可能与多个表格有关,增长幅度很大。
这一指数有选择吗? 如果您的桌子有100万分,其价值达到1亿五千分之十,那么你的指数是无用的。 事实上,如果实际使用,则可能比没有使用更糟。 再说一遍,教育、科学和技术部就象一项“选举”声明:我们可以调整其准入道路。
此外,删除了许多空洞的表层,因此,如果该系统正在大量使用,你可能会受到争议。 在多用户系统中,另一场会议可能会在你想要删除的行文上设锁。
您是否曾担任过教育促进者? 您是否有外国关键制约因素?
<><>Edit>: 鉴于你所说的一切,尤其是有关一栏是你试图删除单一行文的主要关键所在,如果要花很长的时间,其他某些程序或使用者就会有锁。 页: 1 V$LOCK?
所以我会分享我的经验,说不定会有人受益。
问 题
delete from foo
where foo_id not in (
select max(foo_id) from foo group by foo_bar_id, foo_qux_id
);
页: 1
我按照其他答复对外国钥匙的所有指数进行了核对。 这无助于。
<>Solution:
问题
delete from foo
where foo_id in (
select foo_id from foo
minus
select max(foo_id) from foo group by foo_bar_id, foo_qux_id
);
I ve amended not in
to in
, and used minus
to achieving original results.
现在,这些争.在0.04秘密执行。
如果我能帮助的话,介绍我的经验。
我也有同样的问题(长时间删除或更新时间),因此,我的冷静反应是寻找和杀死 queries的提问。 但是,我找到这些东西的正常情况就显示了这一点。 经过微薄的挖掘,我只找了一张锁定的桌子,并找到了一次不活跃的会议,这显然是积极阻止我试图改变的表格。 这里,我曾问(Oracle 12c)去找几场会议来杀我桌上的更新:
SELECT
c.owner,
c.object_name,
c.object_type,
b.sid,
b.serial#,
b.status,
b.osuser,
b.machine
FROM
v$locked_object a ,
v$session b,
dba_objects c
WHERE
b.sid = a.session_id
AND
a.object_id = c.object_id;
接着是上述调查中的阴道和序列号:
ALTER SYSTEM KILL SESSION SID, SERIAL# to end those sessions and free the locks.
我没有大白,这可能是坏事,但为我工作。
Does your table holds more number of records ?
Is there some recursive programs(some nested loops etc..) running on the database server ?
Check network problems if database server is on different machines ?
甲骨文和我的谢克尔之间存在巨大差异:
甲骨质不是自动为外国钥匙设定指数,而是真菌。 然后,如果你有一张可以删除其指挥的母子表格,那么你就必须在儿童表格中就外国钥匙编制索引,否则,如果儿童表格中有许多行文,删除母桌上的指挥就会非常缓慢,因为它必须包含儿童表的所有记录per删除任何父母记录。
然后,当你想从Oracle数据库的括号中删除时,就会小心谨慎。