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';它通常表現更好 –