關於一表很多列的總結

litterbaby發表於2007-08-06
關於一表很多列的總結[@more@]

關於一表很多列的總結

ITPIB上遇見一個表有900多列的例子,自己在以前也看到曾經有人這樣做過,以下就這個問題做一個總結吧。

http://www.itpub.net/showthread.php?s=&threadid=829101&perpage=10&pagenumber=3

問題

一個有920列的表算列比較多的表嗎?

oracle10g中我們的一個表有920列,其它幾個表有700多列,主要是插入,沒有更新。

插和讀比較多,表的儲存是按照日期來分割槽的。但是所有的這些表都在一個表空間上。

只是不知道920多列是否算多,對應資料庫的效能影響大嗎?

關於這樣做的好處:我不清楚在的資料庫在設計階段為什麼要設計這麼大的表,應該有自己的考慮,但是拋開他們的這些考慮,這樣做的好處無外乎有以下好處:

1、一個行能夠容納所有的資料。

2、設計簡單

3、程式設計師程式設計方便

4、以後維護方便

5、減少表表之間的連結

但是實際的系統執行中,由於你這樣的設計會給系統帶來很多問題,其中就包括效能問題:

1、由於你將一個表設計的過為複雜,在查詢的時候需要建立多各索引才能滿足你的需要,索引過多引起的效能問題

2、表的列過多,你選擇一行資料的時候往往並不是所有列的資料都需要,但是這些資料都存在一個塊中,既是你不需要,但是系統還是會將那些資料提取出來,這樣就會造成過多的IO,邏輯讀和物理讀

3、可能造成過多的行連線或者行遷移,也會影響系統效能

另外,oracle是可以提供超過1000列的資料,但是在Oracle的資料塊的存放中資料的存放是有一個位元組來標識這哥列是第幾個列,也就是說一個位元組只能表示255個列,但是如果一個表有多餘255列是如何實現的哪?Oracle是透過連結列的形式存在的,這些也給oracle的處理帶來一定的負擔,所以從Oracle的實現上來說,將呢的列控制在256之內是一個選擇。

4、在好處有程式設計師程式設計方便的好處,但是這些多的列,程式設計師寫出來應該是比較辛苦的,呵呵

有幾種方式來實現這種需求的設計:

1、主從表的方式

你可以根據業務的需要出發,將這個表分成一個主表,多個從表的形式,主從之間使用唯一外來鍵進行刪除接連。這樣的好處就是可以避免一些弊端。

2、使用縱相設計的方式實現

例如表有列c1,c2......c1000可以實現為:

colcol_values兩個列的形式來實現。

這樣有好處就是可以動態新增自己所需要的列,實現起來很靈活,方便

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-932493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章