我們有一個表格,其中有超過62k行。我們正在運行就可以了很簡單的刪除查詢其需要45分鐘才能完成:Postgres緩慢運行刪除查詢
DELETE FROM myTable WHERE createdtime < '2017-03-07 05:00:00.000'
的事情,我們曾嘗試:
1加時間戳列的索引,這並沒有幫助。
2-使用函數刪除了批次爲20或50的行,該函數仍然非常慢。
3-刪除了引用該表的所有外鍵約束和它自己的主鍵約束,這有助於減少時間到幾秒鐘,但我們無法安全地在生產數據庫上執行此操作,因爲它會鎖定表,並防止事務正在運行時讀寫。
我不認爲這個查詢花了很長時間才能完成是正常的。任何建議表示讚賞。
'刪除引用此表的所有外鍵約束'這些FK的索引是否支持它們(在* other *表上)? – joop
他說什麼。很明顯,花在查找FK約束上的時間是 – paqash
性能問題應該包括EXPLAIN ANALYZE以及關於表大小,索引,當前時間性能,期望時間等的一些信息。慢是一個相對項,我們需要真正的值來比較。 MySQL也請閱讀[如何 - 問](http://stackoverflow.com/help/how-to-ask) – e4c5