我有一个表,花了很多时间删除一些行(按国家/地区划分有 32000 条记录)。 我创建一个函数。 我拆分了删除并使用循环指令并提交,但是当我执行该函数时出现错误
我的功能删除测量:
LOOP
DELETE FROM measure WHERE id_measure IN (SELECT id_measure FROM measure WHERE id_country=10 LIMIT 1000);
EXIT WHEN NOT FOUND;
COMMIT;
END LOOP;
在另一个函数中,我调用 DelteMeasure,但我的提交行有问题。
Select * from DeleteMeasure();
我可以帮忙吗?
你应该尝试简单的
delete from measure where id_country = 10;
删除前请确保
is_country
已编入索引。重复选择 1000 个项目直到没有更多匹配项会减慢该过程。
如果您需要删除大部分记录,那么您可以将要保留的记录保存到另一个表中,该表的架构是从该表复制的,删除该表,然后重命名另一个表。