聊天服务表设计的性能考虑因素

时间:2016-12-20 09:42:34

标签: mysql

我们正在实施聊天服务,我想对桌面设计提供一些意见。我们的服务使用MySQL,我们的数据库有2个表,线程和消息。线程表存储所有聊天线程,而消息表存储所有消息。聊天线程可以有多条消息,而消息只属于一个线程。每条消息都由Messages表中名为messageId的列标识。

我们需要在服务中不时获取每个线程的最后一条消息的messageId。我可以看到两个选项:

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;

我应该选择哪个选项?为什么?

1 个答案:

答案 0 :(得分:0)

我建议选择选项2,下面是原因。

  1. 你说你需要不时的消息ID,这意味着不那么频繁。 与每次插入时进行Update操作相比,查询时间较短。

  2. 您可以通过在消息表上创建索引来进一步微调查询。