2016-12-20 38 views
0

我們正在實施一個聊天服務,並且我希望在表格設計上有一些輸入。我們的服務使用MySQL,我們的數據庫有2個表,線程和消息。線程表存儲所有聊天線程,並且郵件表存儲所有消息。聊天線程可以有多個消息,而一條消息只能屬於一個線程。每個消息由Messages表中名爲messageId的列標識。聊天服務表格設計的性能考慮

我們需要不時地在我們的服務中獲取每個線程最後一條消息的messageId。我可以看到2個選項:

1 add a column called lastMessageId to Threads to keep track of the last message; each time a message is inserted into Messages table, we need to update Threads table as well; 

2 each time we need the last message's id, perform a query on Messages table to find the last message; 

我應該選擇哪個選項,爲什麼?

回答

0

我建議去選項2,下面是原因。

  1. 你說u需要最後一條消息ID時不時這意味着不那麼頻繁。 對每個插入進行更新操作的時間比查詢時間少。

  2. 您可以通過在消息表上創建索引來進一步微調您的查詢。