-
問題描述 oracle資料庫中某錶的資料已經超過1億,並且該錶建立了獨立的索引,由於業務需要,每天需要兩次向該表中插入10000條記錄,由於資料量大,每次插入需要乙個多小時, 這嚴重影響了效率,所以修改了系統的演算法,只儲存本表當天的新記錄,截斷該錶後,第二天對本表執行更新操作時,非常耗時,而且當表中的資料超過1億條時, 這個 SQL 語句在第二個表中需要時間 當資料有 10000 條時,這個 SQL 語句需要幾個小時,在諮詢 DBA 後得出結論,索引需要重新構建,這個操作秒級完成,但問題還是出現在第三天,DBA
對於這個問題,DBA沒有給出渣段理論的解釋,推測主要原因是Oracle的複雜查詢優化演算法。
最終備份 DBA 給出的解決方案。
truncate table
drop index
insert data
create index
yze table table_name pute statistics;重新模仿梁圖的新生成屬性。
lishixinzhi/article/program/oracle/201311/16938
-
我在開發過程中也看到了你的問題,我當時有600多萬條記錄,單獨執行內部流程看似很快,但有時卻很慢,我們先說一下解決方法:你需要根據查詢條件為你的表設計對應的索引, 有時,您可以根據需要為表建立多個索引。然後你會發現,過去需要 30 秒才能完成的事情,現在可以在零點幾秒內完成,這與使用游標無關。
游標的使用完全取決於你的應用需求,我相信你絕對不會選擇使用游標處理,如果你能做到的話,一般在你真的做不到的時候選擇游標來做。
你的查詢之所以慢,是因為如果你在儲存過程中執行,在沒有索引的時候,他會一一檢查,把80條萬條資料全部掃瞄一遍,直到你檢查完才看到結果,但是你乙個人在外面執行的原因是plsql會先檢查幾條資料,然後返回先給你,這樣你馬上就會看到結果,但其實查詢還沒有結束,如果你下拉的情況下資料很多,你會很慢地傳送信件,其實查詢過程根本就沒有結束。
總之,寫儲存程序的第一步是會寫,第二步是做好優化,否則當你有大量的資料時,你的程序寫不好,問題馬上就會暴露出來。
在伺服器主機上登入SQLPplus時,SYS使用者不需要密碼,也可以輸入任意密碼,方法一:sqlplus"/as sysdba" >>>More
首先,你應該檢查你的系統是否有問題,是系統病毒還是其他原因導致IE瀏覽器開啟緩慢,開啟任務管理器檢查CPU和記憶體占用是否正常,記憶體是否太小。 請注意,C盤不應該塞太多東西,至少應該預留3G或更多的空間。 >>>More