为了提高性能,是否有一个单独的专栏列和年份是一个好习惯?

时间:2014-09-09 11:23:47

标签: mysql sql group-by

我有这样一张桌子:

id | content | date
45 | "Lorem" | "2014-09-06"
56 | "Ipsum" | "2013-05-01"

该表有很多行。现在我需要获得不同的年份值。

说明:

SELECT YEAR(`date`) AS `year` FROM `news` GROUP BY `year` ORDER BY `date`

不幸的是,此解决方案并未使用date索引。

我的问题是,如果有一个单独的year列并在每次插入/更新之前设置它并在其上有索引,这是一个好习惯吗?

或者有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果你问我,请time-space tradeoff。在任何情况下,为了维持规范化,您需要从日期中排除年份,或者永远不要将用于的年份列。。

可能的实现是根据Is it possible to have function-based index in MySQL?使用插入/更新触发器。这不应该对性能造成太大影响,因为新闻可能比阅读更频繁地添加/更新。