0

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

4

3 回答 3

1

你为什么想做这个?SQL 将为您过滤数据...例如获取当月的数据:

select col1, col2, col3 from tbl1 where date_format(date_col, '%m') = date_format(now(), '%m')
于 2013-02-17T16:38:52.777 回答
0

那么一个新用户将是一个新表吗?

这个:

  1. 暗示对您的 mysql 站点用户的 DDL 权限(CREATE TABLE)(除非您手动或通过某种 crontab 任务执行此操作)
  2. 每当您想检索所有用户的数据或只知道用户列表时,如果不混合 mysql user_schema 表和常见的 dml 操作,它就无法轻松解析

确实,答案并不容易,也不是确定的,但理想情况下,作为“宗教”观点,我尽量避免在我的网站日常生活中进行模型操纵。将自己定位于元建模。

希望有帮助,

S。

于 2013-02-17T16:38:24.007 回答
0

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

您还必须考虑其他事情以及历史表。例如,您需要安排事件将数据从当前表移动到历史表。如果更改当前表,则还需要更改历史表。由于您将使用 UNION,因此查询所有数据可能会更麻烦一些。

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

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

于 2013-02-17T16:55:38.817 回答