mysql - 为了提高性能,使用带有日期年份的单独列是一种好做法吗?

标签 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 列并在其上创建索引是否是一个好习惯?

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

最佳答案

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

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

关于mysql - 为了提高性能,使用带有日期年份的单独列是一种好做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743399/

相关文章:

Mysql选择与预订日期范围不相交的日期

php - 如何使用条件语句将两个搜索结果语句合为一个?

python - 计算每组的滚动总和

python - 使用 groupby 有效计算日期范围内某个值的出现次数

c# - LINQ GROUP BY 和 MAX()

mysql - COUNT(id) 查询花费的时间太长,哪些性能增强可能有帮助?

mysql - 优化 MySQL GROUP BY 查询

sql - 甲骨文10 : Using HEXTORAW to fill in blob data

mysql - 从 UNION 集合运算符中消除 NULL 值

android - 数据库文件未从 Assets 复制到 data/data/<package name>/databases