Mysql为每个用户提供单独的表。(用户每月输入数据,如果该数据在单独的表格中)

Mysql为每个用户提供单独的表。(用户每月输入数据,如果该数据在单独的表格中),mysql,Mysql,我正在制作一个网站,用户每月在其中输入数据,这些数据存储在mysql数据库中,带有日期键,因此可以按日期检索。在浏览这些数据时,为每个用户创建一个单独的表会更容易,更容易让人理解,但是我非常确定这样做是个坏主意。任何人都可以确认这一点并提供其他解决方案。那么新用户就是新表了吗 这: 向mysql站点用户暗示DDL权限(创建表)(除非您手动或通过某种crontab任务执行此操作) 如果不混合使用mysql user_模式表和常见的dml操作,当您想要检索所有用户的数据,或者只知道用户列表时,就无法

我正在制作一个网站,用户每月在其中输入数据,这些数据存储在mysql数据库中,带有日期键,因此可以按日期检索。在浏览这些数据时,为每个用户创建一个单独的表会更容易,更容易让人理解,但是我非常确定这样做是个坏主意。任何人都可以确认这一点并提供其他解决方案。

那么新用户就是新表了吗

这:

  • 向mysql站点用户暗示DDL权限(创建表)(除非您手动或通过某种crontab任务执行此操作)
  • 如果不混合使用mysql user_模式表和常见的dml操作,当您想要检索所有用户的数据,或者只知道用户列表时,就无法轻松解析
  • 事实上,答案并不简单,也不确定,但理想情况下,作为一个“宗教”观点,我尽量避免在我的网站的日常生活中操纵模型。 面向元模型化

    希望有帮助


    你为什么要这样做?SQL将为您筛选数据。。。e、 g.要获取当月的数据:

    select col1, col2, col3 from tbl1 where date_format(date_col, '%m') = date_format(now(), '%m')
    

    使用历史记录表可能有优势,主要是在有性能原因的情况下。但是,一般来说,您不需要将当月数据与上月数据分开,除非您计划拥有大量数据(大多数RDBMS可以轻松支持数百万条记录,而不会影响性能)。我不建议仅仅为了演示而拆分表

    在历史记录表中,您还必须考虑其他因素。例如,需要计划事件将数据从当前表移动到历史表。如果更改当前表,还需要更改历史记录表。此外,查询所有数据可能会有点麻烦,因为您将使用联合

    在单个表上建立适当的表索引似乎更容易,如果需要,可以查看当前月份的数据


    但是,如果性能是一个问题,那么我同意将数据移动到历史记录表是有利的。

    为什么这是一个坏主意?@ExplosionPills--嗯?假设所有字段都相同,只需向表中添加一个UserId列。然后,您可以轻松地按用户进行查询——除非我误解了什么,否则无需或没有理由为每个用户使用单独的表。我想不是每个用户使用单独的表,而是为每个用户使用单独的表histories@ExplosionPills是 啊这就是我所说的为每个用户分别创建一个表的意思。@handuel那么为用户历史创建一个表有什么错呢?