0
林做这个简单的交易:火鸟删除很慢
DELETE FROM ominve01
WHERE CVE_OBS IN (SELECT CVE_OBS
FROM minve01 M
WHERE M.FECHA_DOCU < '31.12.2010'
OR FECHA_DOCU > '31.12.2015')
- minve01具有189K行
- ominve01有86K行
但是这需要约2个半小时即可完成删除。我的查询不好?我该如何改进它?
或者我该如何提高交易速度?
- ominve01.cve_obs是PK
- minve01.cve_obs不pk的
多久'SELECT'需要运行它自己的?如果这部分需要很长时间,请考虑'minve01.FECHA_DOCU'上的索引(我建议使用聚簇索引,但似乎Firebird不支持它们)。我认为'ominve01.CVE_OBS'上的索引不会有多大帮助 - 但无论如何你都可以试试看。我能想到的另一件事是完全重构语句,所以它不使用'WHERE column IN(subselect)',但我对Firebird的语法不足以提供任何建议。 – Turophile
你指出我正确的方向...我添加了一个索引minve01.cve_obs和删除只需要980mS ...谢谢! – Chico3001
您可能还想考虑使用'EXISTS'而不是'IN';它通常表现更好 –