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