如何對SQLServer的海量資料進行最佳化

來源:互聯網
上載者:User

 

               我們都知道在涉及海量資料問題的時候,一般都需要用到資料倉儲和資料最佳化技術。那麼怎樣對資料最佳化呢?本文將簡單介紹一下如何對海量資料的最佳化。

      1.索引的使用:索引可以提高檢索資料的速度,但同時也會降低寫入資料的速度。

      在SQLServer中專門有一個索引表來存放我們建立的索引,一般情況下我們都將索引建立在資料類型是Int或是Char型的欄位上。

      2.資料鎖的使用:行鎖,頁鎖,表鎖等。(預設是頁鎖)

       切記 防止死結的發生。

      3.資料庫事務,資料並發方式。 

       一般將主從表放在事務中來處理。

     4.盡量不迴圈讀取資料,適當的時候可以增加一些暫存資料表,或在暫存資料表中增加一些臨時欄位,來避免迴圈。

    5.橫向切分

     把表中經常查詢的和不常用的分開成幾個表
 

    6.縱向切分

     把不同類型的分成幾個表

    7.盡量不迴圈讀取資料

       可以使用暫存資料表和一些臨時欄位來避免迴圈。暫存資料表可以防止資料在中途被修改,且插入暫存資料表中的資料不寫入日誌,建索引也非常快,且不插入索引實體表。可將要插入的資料先插入暫存資料表中,最後一次性匯入正式表中。

   8.合理建立表的索引並利用表的索引

   9.關聯的表要盡量少,資料量少的表盡量放在資料量多的表的前面

 10.避免where條件後面用函數

      如:sum等。

11.避免長事務(等待時間過長)

12.資料表的欄位不能太多

13.多使用試圖(View)

14.大量資料的處理盡量放在預存程序中來實現

15.OR語句的寫法盡量規範

     如:select tid,tname from table where tid=5 and (tname='3' or tname='t')盡量寫成select tid,tname from table where (tid=5 and tname='3' ) or (tid=5 and tname='t')

16.盡量不要在Sql語句中嵌套Sql語句(子查詢) 

17.在資料量大的情況下,為了提高檢索速度,可適當增加表的冗餘

18.用聯結和Delete語句來代替Not In,In 比Not In要快

 

      本文純屬公司一位牛人和我個人的一些經驗之談,不具參考價值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.