Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在以下情况下,哪种数据库设计更好?为什么?_Mysql_Database_Database Design_Relational Database_Database Schema - Fatal编程技术网

Mysql 在以下情况下,哪种数据库设计更好?为什么?

Mysql 在以下情况下,哪种数据库设计更好?为什么?,mysql,database,database-design,relational-database,database-schema,Mysql,Database,Database Design,Relational Database,Database Schema,首先,我想澄清一下情况 有大量的邮件系统有列表(电子邮件组),每个列表有多个联系人(电子邮件)。联系人有一些状态,如正常、未订阅、反弹等 我正在考虑设计这样的东西 Table Contacts ----------------------------------------- id email group_id contacts status ----------------------------------------- status将存储上述电子邮件ID状态 但是一个列表可

首先,我想澄清一下情况

有大量的邮件系统有列表(电子邮件组),每个列表有多个联系人(电子邮件)。联系人有一些状态,如正常、未订阅、反弹等

我正在考虑设计这样的东西

Table Contacts
-----------------------------------------
id    email   group_id contacts   status
-----------------------------------------
status将存储上述电子邮件ID状态

但是一个列表可能包含数千封电子邮件,因此如果客户端数量增加,检索数据将导致性能问题

所以我得到了两个解决方案

  • 为状态列建立索引的步骤
  • 为不同的联系人状态制作不同的表格,如

    一个用于正常添加触点的表 另一个用于未订阅的联系人。 其他州也是如此

  • 因此,我的问题是,对于上述情况,哪种解决方案更好。 请引导我

    我将绑定多对多关系中的列表和联系人,上表仅用于描述问题。 提前谢谢

    更新

    用于从上表检索信息的查询

  • 用于检索正常联系人

    从组id为“[group\u id]”且状态为1的联系人中选择*

  • 对于未订阅的联系人

    从联系人中选择*,其中组\u id=[组\u id]”和状态=2 等等


  • 请在
    group\u id
    status

    i、 e

    这将解决任何性能问题,因为数据库可以在不锁定表的情况下找到列表


    在扫描该列表时,最好不要执行任何昂贵的操作(例如,发送电子邮件)

    为什么问题会被否决?是否有任何错误。除非我知道您将要使用的查询,否则我无法推测您需要的索引。@EdHeal获取列表联系人的查询将是从联系人中选择*,其中组id=[group\u id]和状态=1(对于普通联系人)。查询列表中的未订阅联系人将从联系人中选择*,其中group_id=[group_id]和status=2(对于未订阅的联系人)将其作为问题的编辑-这对回答者来说有点关键第二种方法会有什么问题?为什么要麻烦地将联系人从一个表移动到另一个表?这不是必需的。我打算在数据库中一次添加数千封电子邮件,还允许其他基本的crud操作。因为我知道索引会降低插入更新操作的性能。是的。但它提高了读取性能。当然,大多数操作都是读取的。如果您正在上传大量数据,请在一段安静的时间(例如,隔夜)进行上传,或者将其分解
     create index my_index on contacts(group_id, status)