我小的SQL邏輯工作優化SQL掃描查詢,以獲得從Postgres的結果DB
我一個表的消息contaning MESSAGE_ID,ACCOUNTID欄目
數據被保存在這個表來具有獨特消息ID。
我的目標是將這些檯面數據存儲到另一個數據庫中。 [從postgres(來源)數據庫到postgres(目的地)數據庫]
爲此我設置了ETL作業。這有助於我傳輸數據。
問題在於,在郵件表所在的postgres(source)DB中,在該表中message_id不是以排序的形式。和數據看起來像這樣.....
而我的etl作業在每半小時後運行,我的動機是每當etl作業運行時,根據message_id從源數據庫到destinaton數據庫。在目標數據庫中,我有一個存儲過程,它可以幫助我從消息表中獲取max(message_id),並將該值存儲在另一個表中。因此,在ETL中,我在查詢中使用該值來激發源數據庫,以獲取比我從目標數據庫獲取的message_id更大的數據。
所以它的一種負載增量process.using etl。但查詢正在使用,以獲得從源數據庫的數據是這樣的http://prnt.sc/b3u5il
SELECT * FROM (SELECT * FROM MESSAGES ORDER BY message_id) as a WHERE message_id >"+context.vid+"
這個查詢掃描每次運行時的所有表...所以itakes這麼多的時間來執行。我得到了我想要的結果。但是有什麼辦法可以讓我以更快的速度執行這個過程。
任何人都可以幫助我優化這個查詢(不知道它是否可能)?或任何其他建議,歡迎。
謝謝