天天看點

資料表的水準分割和垂直分割

有時對表做分割可以提高性能。表分割有兩種方式:

1、水準分割:根據一列或多列資料的值把資料行放到兩個獨立的表中。

  水準分割通常在下面的情況下使用。

  •表很大,分割後可以降低在查詢時需要讀的資料和索引的頁數,同時也降低了索引的層數,提高查詢速度。

  •表中的資料本來就有獨立性,例如表中分别記錄各個地區的資料或不同時期的資料,特别是有些資料常用,而另外一些資料不常用。

  •需要把資料存放到多個媒體上。

    水準分割會給應用增加複雜度,它通常在查詢時需要多個表名,查詢所有資料需要union操作。在許多資料庫應用中,這種複雜性會超過它帶來的優點,因為隻要索引關鍵字不大,則在索引用于查詢時,表中增加兩到三倍資料量,查詢時也就增加讀一個索引層的磁盤次數。

  2垂直分割:把主碼和一些列放到一個表,然後把主碼和另外的列放到另一個表中。

  如果一個表中某些列常用,而另外一些列不常用,則可以采用垂直分割,另外垂直分割可以使得資料行變小,一個資料頁就能存放更多的資料,在查詢時就會減少I/O次數。其缺點是需要管理備援列,查詢所有資料需要join操作。

注:如果資料不是永久儲存的話,可以把資料量多的一些表過一段時間改成另外的名字,比如按季度:tabe0,tabe1,tabe2,tabe3等,放在同一個庫中,不斷輪換,抛棄不用的資料,這樣可能會減少記錄數,提高查詢速度

繼續閱讀