程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 數據分割-一個易被忽略的查詢優化手段

數據分割-一個易被忽略的查詢優化手段

編輯:Oracle數據庫基礎

在數據倉庫項目中,由於數據規模龐大,提高數據的查詢效率是永恆的主題,常見的優化手段有:

1、 硬件優化:提高機器性能,增加硬件等;

2、 優化查詢語句,將限定性強的where條件放前,用exists代替in操作等;

3、 優化索引,建立有效的索引並檢查和修復缺少的統計信息等;

4、 數據庫系統文件優化,將數據文件、索引文件、日志文件放置在不同的磁盤上,提高並行度等

除了以上方法外,還有一種很重要但易被大家忽略的方法:大表數據分割。當一個表的數據規模達到數億條時,索引已基本發揮不了作用:建立索引要花費大量時間,查詢時由於要掃描大的索引表也要花費大量時間。為了發揮索引的作用,可以將大表按照某個字段拆分為若干個小表。

例如,國內某大型保險公司,其有36家分公司,一年的保單明細表(f_policy)大概有2億條記錄,兩年的數據超過4億條,如果在f_policy上作一次查詢,響應非常慢,可以考慮將f_policy按照機構拆分為36個同構的小表,在作整個保單明細表的查詢時,可以使用union all操作合並數據,或者建立一個union all的視圖,查詢效率大大提高。並且,作這樣的拆分非常有用,因為經常會有只查詢某個分公司數據的需求。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved