2009-12-04 74 views
1

我有一個模型「消息」,我用它來存儲整個網站的消息。這些是討論中的消息,私人消息和可能的聊天。它們全部儲存在一張桌子裏。我想知道如果我在幾個模型和表格之間傳播信息會不會更快。一個用於聊天,一個用於討論等。Django:一個模型的幾張表。

所以我應該保留所有的消息在一個表/模型或創建幾個相同的模型/表?

回答

1

只要你有你的type列的索引並對其進行過濾,它將具有相同的速度。當您的表格變得非常大時,只需在type列中進行分割即可,它與執行多個表格的性能相同,但您的應用只會看到一個大表格。

1

一「表」將成爲搜索目的更好的(同時對所有的郵件,你可以在「搜索」。

然而,多個表可能會受益於速度。

爲什麼不使用抽象類?

class MessageBase(models.Model): 
    subject = models.CharField(max_length=255) 
    test = models.TextField() 

class ChatMessage(MessageBase): 
    pass 

這將創建2個表,該表ChatMessage只是直接引用該表MessageBase,這會給你兩全其美。「搜索」使用MessageBase以獲取任何消息,但保存,並參考,所有其他呃使用它的特定模型類的消息。

(請注意,這裏的蟒蛇可能是稍有不妥,因爲它尚未經過測試,但我敢肯定你的想法!)