正在使用 mysql 数据库开发一个大型聊天应用程序,对话一次只能在 2 个人之间进行。 寻找关于哪些数据库模式选项性能更好的意见。
选项 1。每条消息/响应插入一行的传统方法。
只需插入一个没有事先查找但重建的数据库
聊天线程需要 ORDERBY
选项 2。或者将每条消息附加到单个消息字段。 选择会更快,因为不需要 ORDERBY 然而,每条新消息都会首先进行查找
使用选项 2 时,数据库中的总行数也会减少
有什么想法吗?
最佳答案
这完全取决于您想对该字段执行什么操作。但在几乎所有情况下,第一个解决方案(每个对话单独一行)是正确的方法。
如果您将对话视为“blob”,则您只想使用第二种方法(所有这些方法都使用一个字段)。也就是说,如果您不想选择特定邮件,请在邮件内搜索,等等。从本质上讲,该列将是消息的存档,而不是与其他列一样有用的东西。
我还应该补充一点,在对话中,将消息存储在单个列中会丢失消息发送时间和发送者的信息。当然,您可以尝试封装它,例如使用 JSON 列。但何苦呢? SQL 已经拥有表示此类信息的良好机制。
关于mysql - 大型聊天应用程序 Mysql 数据库消息存储 每条消息 1 行或将整个线程附加到 1 个长文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973782/