mysql - 如何在mysql中存储数据,以获得最快的性能?

标签 mysql database database-design

我在考虑,对于我站点内的用户消息传递模块,以下两种查询类型中的哪一种可以提供最快的性能:

我想到的第一个是多表设置,它有一个连接表和一个主表。连接表保存帐户和消息传递表之间的连接。

在这种情况下,查询如下所示,以获取作者的一些数据以及他发送的消息:

SELECT m.*, a.username 
  FROM messages AS m
  LEFT JOIN connection_table 
    ON (message_id = m.id)
  LEFT JOIN accounts AS a 
    ON (account_id = a.id)
 WHERE m.id = '32341'

插入其中有点“复杂”。

我的另一个想法,在我看来,这个问题的更好解决方案是,我将要在连接表中使用的数据存储在存储邮件数据的同一个表中。听起来我会得到很多重复的条目,但没有,因为我有一个字段具有文本类型并包含这样的用户 ID:*24*32*249* 如果我想查询它们,我使用 mysql LIKE 方法。删除是另一个问题,但为此我还有一个字段用于存储删除帖子的人。 很遗憾我不知道如何加入。

那么你会推荐什么?还有其他方法吗?

最佳答案

听起来您正在使用 n:m 关系。如果是,请不要将 ID 列表放在单个列中,而是创建一个包含两列的映射表 - 表 1 的主键和表 2 的主键.然后选择、插入和删除都将很容易,而且仍然很便宜。

关于mysql - 如何在mysql中存储数据,以获得最快的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846973/

相关文章:

javascript - Mysql查询时间问题?

mysql - SQL Join 条件优化

mysql - 用日期名称创建一个表

MySQL 全文搜索没有匹配项

mysql处理已知数量级别的嵌套数据

mysql - 改变大表的结构有多糟糕?

sql - sql中如何设计M-M表之间的关系

mysql - 导入时不遵守默认数据库排序规则

mysql - 整数格式的mysql日期迁移

oracle - 与 Oracle 最兼容的开源 DBMS 是什么?