每个用户的Mysql单独表。 (用户每月输入数据,如果此数据放在单独的表中)

时间:2013-02-17 16:30:52

标签: mysql

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

3 个答案:

答案 0 :(得分:1)

你为什么要这样做? SQL会为您过滤数据...例如获取当月的数据:

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

答案 1 :(得分:0)

然后一个新用户会是一个新表吗?

此:

  1. 暗示您的mysql站点用户的DDL权限(CREATE TABLE)(手动或通过某种crontab任务执行除外)
  2. 只要你想要检索所有用户的数据,或者只是知道用户列表,
  3. 就不会轻易地解析mysql user_schema表和常见的dml操作
  4. 真的答案并不容易,也不是明确的,但理想情况下,作为一种“宗教”观点,我试图避免在我的网站日常生活中操纵模型。 让自己走向元模型化。

    希望它有所帮助,

    S上。

答案 2 :(得分:0)

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

您还必须考虑其他事项以及历史记录表。例如,您需要安排事件将数据从当前表移动到历史记录表。如果更改当前表,则还需要更改历史记录表。因为你正在使用UNION,所以查询所有数据可能会有点麻烦。

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

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