MySql 學習筆記四:表的拆分

衣舞晨風發表於2016-10-07

一、水平劃分

如果一個表的記錄數太多了,比如上千萬條,而且需要經常檢索,那麼我們就有必要化整為零了。如果我拆成100個表,那麼每個表只有10萬條記錄。當然這 需要資料在邏輯上可以劃分。一個好的劃分依據,有利於程式的簡單實現,也可以充分利用水平分表的優勢。比如系統介面上只提供按月查詢的功能,那麼把表按月 拆分成12個,每個查詢只查詢一個表就夠了。如果非要按照地域來分,即使把表拆的再小,查詢還是要聯合所有表來查,還不如不拆了。所以一個好的拆分依據是:最重要的。(UNION )

將某個訪問極其頻繁的表再按照某個欄位的某種規則來分散到多個表之中,每個表中包含一部分資料。

二、垂直劃分

有些表記錄數並不多,可能也就2、3萬條,但是欄位卻很長,表佔用空間很大,檢索表時需要執行大量I/O,嚴重降低了效能。這個時候需要把大的欄位拆分到另一個表,並且該表與原表是一對一的關係。 (JOIN)

如果一張表某個欄位,資訊量大,但是我們很少查詢,則可以考慮把這些欄位,單獨的放入到一張表中,這種方式稱為垂直分割.

本文部分內容整理自itcast講義,在此表示感謝。
作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章