簡體   English   中英

跨大型但有限的表組優化 JOIN 架構

[英]Optimize Schema for JOIN across large but finite group of tables

我在這里有一些靈活性,所以在我鎖定之前我正在尋找一些建議。 我也有幾種解決此問題的方法,但我正在尋找有關最有效方法的建議。 由於我的數據類型的細節有點模糊,我將使用更易於理解的 object 比喻。

現在我有兩個主表,以及大量但數量有限的附加表。 以下業務邏輯適用。

  1. 每個特定的動物表都有一個分配給它的唯一字段,例如豬的“鼻子直徑”或貓的“胡須”。 還有另一個領域
  2. 動物表有一個標記動物“角色”的字段。
  3. 一個籠子里可以有多種動物。
  4. 動物通過 FK 約束鏈接到籠子。 特定的 Animal 表通過 FK 約束鏈接到 animal 表。

    • 籠子
      • 動物
        • 豬等

被問到的主要問題是,籠子里有什么? 我還需要能夠盡快搜索所有籠子,並獲得屬於“美味”角色的動物的所有信息。 有時豬會“好吃”,有時它可能是貓。 根據“美味”的動物類型,我需要顯示它的具體信息。

什么是最有效的架構設計,或 SQL 語句來查找此信息?

我的第一次嘗試只有籠子,然后是一堆“SpecificAnimal”表。 這似乎是個壞主意,因為我必須對 10 多個表進行連接才能弄清楚籠子里有什么。 然后我將常用屬性移到動物表中,這讓我可以輕松查看籠子里有哪些動物,盡管這仍然需要搜索特定表以獲取所有數據。 我考慮將特定屬性存儲到某種形式的 CSV 字符串中(但我還沒有那么絕望)當然我可以 go EAV,但這也似乎效率低下,因為確實存在有限數量的動物。

我是不是很擔心? 我應該硬着頭皮接受跨 10 個表的聯接嗎? 只是擔心性能......任何可以推薦的想法或設計模式。 遭受信息超載和頭冷的折磨。 請幫忙。

真的很難回答“什么是最好的模式”問題,因為它們總是涉及權衡。 這部分意味着要准確地權衡一種設計與另一種設計,您必須進行測量(例如速度)來做出決定。 (這可能不是您要尋找的答案)。

就其價值而言,10 次連接並不是一個龐大的數字,並且取決於系統中動物和籠子的數量,您可能永遠不會注意到速度問題。 此外,如果確實有一個“主要查詢”,那么您可以使用物化視圖至少使該查詢快速回答。

最后,一些總體建議: go 獲得干凈的數據 model 直到您有硬性數字表明您“弄臟”了設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM