Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 删除带有BLOB的记录非常慢_Sql_Oracle_Oracle11g_Blob_Delete Record - Fatal编程技术网

Sql 删除带有BLOB的记录非常慢

Sql 删除带有BLOB的记录非常慢,sql,oracle,oracle11g,blob,delete-record,Sql,Oracle,Oracle11g,Blob,Delete Record,我们有一个Oracle 11g数据库,其中包含几个不同的表。其中一个表包含大约120000条记录,每条记录都有一个BLOB字段。BLOB中的数据大小从2-3KB到数MB不等。问题是,当我们想从这个表中删除一条记录时,只删除一条记录需要很长时间——有时需要一分钟以上(使用SQL developer或使用DBMS作业)。我们可以删除其他表的记录。出于测试目的,我们将要删除的一条记录的BLOB字段设置为空_BLOB(),但再次删除该记录需要很长时间 对于包含BLOB的记录,这种行为正常吗?有没有办法调

我们有一个Oracle 11g数据库,其中包含几个不同的表。其中一个表包含大约120000条记录,每条记录都有一个BLOB字段。BLOB中的数据大小从2-3KB到数MB不等。问题是,当我们想从这个表中删除一条记录时,只删除一条记录需要很长时间——有时需要一分钟以上(使用SQL developer或使用DBMS作业)。我们可以删除其他表的记录。出于测试目的,我们将要删除的一条记录的BLOB字段设置为空_BLOB(),但再次删除该记录需要很长时间


对于包含BLOB的记录,这种行为正常吗?有没有办法调整删除这些记录,以便更快地删除它们?

感谢您的提示,特别是与索引相关的提示。问题源于外键上缺少索引。实际上,我们在外键中有一个“ON DELETE SET NULL”语句,它没有索引。当我们为外键编制索引时,删除速度变得非常快。

是直接删除SQL还是由其他内容触发的。。无论列是什么,删除总是很耗时:)出现了问题。我预计只需要几毫秒。
delete
语句中的
where
子句是否引用索引字段?删除时是否有任何代价高昂的触发器?@realspirituals:这是一个直截了当的SQL语句:delete TABLE_NAME,其中ID=XYZ@KlasLindbäck:我们根据记录的主键(即ID)进行删除。Oracle似乎在所有ID字段上都有一个默认索引(例如SYS_C1234567)。是的,它是一个索引字段。请注意,基于ID(也被索引)从其他表中删除不会花费太多时间。其他表相对较大,有数百万条记录,但是没有任何BLOB字段。您可以发布delete语句吗?你在回收空间吗?BLOB列是否定义为NOLOGGIN?