要優化閱讀查詢:最好將數據分爲兩個表(一對一)或只創建一個包含更多列的表?性能是一個較大的表還是兩個小表(一對一)?
(情況1)
表:Movie_info
- 評級
- 演員
- 董事
- 描述
- 海報
表:電影
- ID
- 標題
- 字幕
- 網址
- movieInfo_id
(案例2)
表:電影
- ID
- 標題
- 字幕
- 網址
- 評級
- 演員
- 董事
- 描述
- 海報
數據的哪一部分是更強大的閱讀查詢?
要優化閱讀查詢:最好將數據分爲兩個表(一對一)或只創建一個包含更多列的表?性能是一個較大的表還是兩個小表(一對一)?
(情況1)
表:Movie_info
表:電影
(案例2)
表:電影
數據的哪一部分是更強大的閱讀查詢?
實時性能取決於你的表的實際大小,但經驗法則:
「非規範化(一個表,而不是在這個特殊的例子二) 總是因爲你不需要加入提高了讀取性能 關係。「
當然,當使用一對一聯接時,聯接關係可以由數據庫系統預先計算,但這是另一回事。
簡而言之,一張桌子更好。
錯誤:一張桌子的設計=壞。在這種情況下,如果你有25個演員使用1張桌子,你會怎麼做?相同的海報?字幕?一個好的規範化數據庫模式在正確優化和建立索引時總會表現良好。我運行一家託管公司,我最大的4個客戶端有大約10個tera字節的數據,其中一個在1秒內運行查詢**,剩下4個左連接,每個表有300多萬行。也許一個表比2快(比如0.01秒快),但數據的可維護性和效率並不高 – eric 2011-12-18 06:43:48
你最需要閱讀什麼?你爲什麼認爲分裂會對任何事情有所幫助? – Oded 2011-12-17 22:22:13
如果你選擇1,演員與董事或海報有關?如果你選擇2,你每部電影只能有一張海報? – 2011-12-17 22:23:20
@BookOfZeus - 他說有1對1的相關性。 – Oded 2011-12-17 22:23:48