我们正在实施聊天服务,我想对桌面设计提供一些意见。我们的服务使用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;
我应该选择哪个选项?为什么?
答案 0 :(得分:0)
我建议选择选项2,下面是原因。
你说你需要不时的消息ID,这意味着不那么频繁。 与每次插入时进行Update操作相比,查询时间较短。
您可以通过在消息表上创建索引来进一步微调查询。