2011-12-17 48 views
0

要優化閱讀查詢:最好將數據分爲兩個表(一對一)或只創建一個包含更多列的表?性能是一個較大的表還是兩個小表(一對一)?

(情況1)

表:Movie_info

  • 評級
  • 演員
  • 董事
  • 描述
  • 海報

表:電影

  • ID
  • 標題
  • 字幕
  • 網址
  • movieInfo_id

(案例2)

表:電影

  • ID
  • 標題
  • 字幕
  • 網址
  • 評級
  • 演員
  • 董事
  • 描述
  • 海報

數據的哪一部分是更強大的閱讀查詢?

+0

你最需要閱讀什麼?你爲什麼認爲分裂會對任何事情有所幫助? – Oded 2011-12-17 22:22:13

+0

如果你選擇1,演員與董事或海報有關?如果你選擇2,你每部電影只能有一張海報? – 2011-12-17 22:23:20

+0

@BookOfZeus - 他說有1對1的相關性。 – Oded 2011-12-17 22:23:48

回答

0

實時性能取決於你的表的實際大小,但經驗法則:

「非規範化(一個表,而不是在這個特殊的例子二) 總是因爲你不需要加入提高了讀取性能 關係。「

當然,當使用一對一聯接時,聯接關係可以由數據庫系統預先計算,但這是另一回事。

簡而言之,一張桌子更好。

+1

錯誤:一張桌子的設計=壞。在這種情況下,如果你有25個演員使用1張桌子,你會怎麼做?相同的海報?字幕?一個好的規範化數據庫模式在正確優化和建立索引時總會表現良好。我運行一家託管公司,我最大的4個客戶端有大約10個tera字節的數據,其中一個在1秒內運行查詢**,剩下4個左連接,每個表有300多萬行。也許一個表比2快(比如0.01秒快),但數據的可維護性和效率並不高 – eric 2011-12-18 06:43:48

相關問題