我有这样一张桌子:
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
列并在每次插入/更新之前设置它并在其上有索引,这是一个好习惯吗?
或者有更好的解决方案吗?
答案 0 :(得分:0)
如果你问我,请time-space tradeoff。在任何情况下,为了维持规范化,您需要从日期中排除年份,或者永远不要将用于的年份列。。
可能的实现是根据Is it possible to have function-based index in MySQL?使用插入/更新触发器。这不应该对性能造成太大影响,因为新闻可能比阅读更频繁地添加/更新。