大量數據的設計小技巧

1:創建分區數據庫

 隨着表的增大,對它的維護也更加困難。在很是大的數據庫中,能夠經過把一個大表的數 據分紅多個小表來大大簡化數據庫的管理活動。例如,能夠根據表中的部門或產品值把一個表 分紅獨立的小表。 注意分分區只對擁有並安裝了分區選項的企業是可用的。 當把一個大表分紅若干小表時,能夠規定一些範圍值供數據庫使用,這些稱做分區 ( p a r t i t i o n )的小表比大表的管理更加簡單。例如,能夠徹底刪除( t r u n c a t e )一個分區的數據而不會 刪除其餘分區中的數據。O r a c l e將把分區表看做一個大表,但能夠把這些分區做爲一些獨立的對 象來管理。 分區還能夠改善應用性能。因爲優化器將知道做爲分區基礎使用的範圍值,因此它在訪問 表時就能夠只使用特定的分區直接查詢。由於在查詢過程當中只瀏覽少許數據,天然就改善了查 詢性能。 除了表外,也能夠對索引進行分區,一個分區索引的分區中的範圍值能夠與索引表使用的 範圍相匹配,這種狀況的索引叫做局部索引(local index)。若是索引分區不能與表分區的值範圍 相匹配,則該索引就叫做全局索引(global index)。 在O r a c l e 8 i中,可以細分分區,建立子分區。例如,能夠先根據一組值分割一個表,而後再 根據另外一種分割方法分割分區。在O r a c l e 9 i中,除了範圍分區與哈希分區以外,還能夠建立目錄 分區(list partitions)。有關分區、子分區、局部索引和全局索引的管理問題。
 
2: 主要爲了防止遍歷表查詢。
好比 LEFT JOIN, RIGHT JOIN 。這些查詢若是能用冗餘避免則應盡力避免。
INNER JOIN 則不用擔憂了。
並且表設計的時候應當儘可能避免出現 LEFT JOIN 。
 
3:減小表關聯,可增長冗餘字段,經過空間來換時間
假如一個論壇庫中有用戶信息表tbUsers有下列字段 user_id(用戶信息編號),user_name(用戶名),user_nick(用戶暱稱) 貼子表tbTopics tpic_id(貼子信息編號),tpic_title(貼子主題),tpic_content(貼子內容),user_id(用戶編號) 在實際的貼子顯示過程當中,咱們要在貼子中顯示用戶暱稱時,都是經過tbTopics表中的user_id和tbUsers表進行關聯來獲取user_nick信息。 上面的兩個表的表結構設計根據設計範式不存在問題,可是若是這個論壇的訪問量大的話,表的關聯的代價就出來了,由於兩表關聯比訪問一個表的代價要大。 所以,咱們能夠採起在tbTopics表中增長一個冗餘字段user_nick,這樣顯示貼子時再也不須要和表tbUsers進行關聯了即SELECT * FROM [tbTpocs]便可,不須要SELECT t.*,u.user_nick FROM tbTpoics t LEFT JOIN tbUsers u ON t.user_id=u.user_id來顯示獲取貼子數據進行顯示.
相關文章
相關標籤/搜索