我有这样一张表:
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
列并在其上创建索引是否是一个好习惯?
或者有更好的解决方案吗?
最佳答案
A time-space tradeoff如果你问我。在任何情况下,为了保持规范化,您都需要从日期中排除年份,或者永远不要将它用于 存在年份列的目的。
一种可能的实现是根据 Is it possible to have function-based index in MySQL? 使用插入/更新触发器.这应该不会对性能造成太大影响,因为新闻的添加/更新频率可能比阅读频率低得多。
关于mysql - 为了提高性能,使用带有日期年份的单独列是一种好做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743399/