我应该添加一个额外的日期列吗?

Should I add an extra date column?

TL;DR: 我有一个带有时间戳列的列。我想按特定日期过滤。我应该添加日期吗?

id(AI/PK)    some    fields    timestamp    *date?*

因此只有时间戳列的查询类似于

SELECT ? 
FROM [TABLE] 
WHERE YEAR(timestamp) = '2015' AND MONTH(timestamp) = '04' AND DAY(timestamp) = '1'

与具有附加日期列的查询相比

SELECT ? FROM [TABLE] WHERE date = date('04-01-2015')?

我目前正处于项目的规划和设计阶段。但这将是一个非常巨大的 table 生产。因此,使用日期列的缺点显然是增加了 table 的大小。我想没有日期列的缺点会降低性能。没有?

好吧,我不确定是不是那么简单。

我不这么认为。你可以这样做:

SELECT ?
FROM [TABLE]
WHERE date(timestamp) = '2015-04-01'

或者,如果您希望查询使用索引:

SELECT ?
FROM [TABLE]
WHERE timestamp >= '2015-04-01' AND
      timestamp < date_add('2015-04-01', interval 1 day);