關于oracle抽取數據的問題?
最近遇到這樣一個問題。源oracle有一個包含7億數據的視圖。這個表是第三方的,我們只有讀權限。除主鍵外,源視圖沒有索引。現在我們必須將其中的所有數據同步到我們的數據庫中。我用分頁的,從一頁中提取5000個片段。剛開始很快,一頁數據幾百毫秒,越慢。現在找出一頁數據差不多要一個小時。以這種速度,你可以不要在一年內全部提取,你可以不要添加索引或任何東西。有什么方法可以提高提取效率嗎?
水壺工具非常方便
工具太多:你的需求是一次性的還是多次的?1.如果是一次性的,用oracles自己的數據以極快的速度,然后同步到目的地,再導入。2.如果是多次,你對時效性有什么要求?如果要求高,可以用CDCs實時提取。詳細的方案可以參考我的文章,里面有具體的步驟和效果。如果實時性要求不高,該方案可以使用傳統的
如何使用oraclehelper?
Pagehelper是mybatis封裝的分頁查詢接口,支持oracl
oracle對于多個大表關聯操作如何優化速度?
1、首先,建立一個合適的指數。Sql沒有在索引字段中添加函數來保證索引生效。如果是復合索引,注意sql中的順序。如果索引已經存在,建議您先重建索引,因為大型數據表的索引在維護的一個階段比較混亂,一般建議重建。一般速度可以提高幾十倍。
2.數據量最大的表放在前面,數據量最小的表放在后面。Sql從最末端開始向后解析。
3.其次,要把最有效的縮小范圍的條件放在sql的末尾。尤其是主鍵或索引字段的條件。
4.保證你的sql算法的合理性。保證復雜度和空間的合理性。
5.必要時使用存儲過程。速度提高30%-40%
6.建議您逐頁閱讀,而不是一次性閱讀所有數據。(使用rownum),一次數據太多會造成內存不足。如果對這些都不滿意,可以考慮建立幾個表空間,然后按照一種算法(表分區)把每個表的數據均勻地放在每個表空間中。選擇時,數據庫會使用多線程對每個表空間中的數據進行索引,一般不用于千萬級的表。不是每個人都能用的。