【发布时间】:2014-07-10 16:37:44
【问题描述】:
我有一个date 类型的列。我想每月对特定年份的行进行分组。
我做了以下事情:
SELECT SUM(price), DATE_FORMAT(production_date, '%Y%m')
FROM TABLE
WHERE YEAR(production_date) = ?
GROUP BY 2
有没有更好/更有效的方法来做到这一点?
【问题讨论】:
-
您可能有兴趣查看 codereview.stackexchange.com,该网站似乎专门研究此类问题。
-
GROUP BY 2是什么意思? -
^ GROUP BY 第二列(是的,mysql 支持这样的语义)。致 OP:如果不了解完整的上下文(结构、大小、索引等),就不可能正确回答
-
@AlmaDo:Fair point。但是使用函数会禁用索引,现在查询的形成方式不会使用它们。所以基本上我对表达相同事物的不同形式感兴趣
-
如果您的查询足够频繁地运行,我建议创建单独的月份和年份列(或者,甚至可能是“年-月”)并将日期的这些部分存储在其中。如果您按该列创建索引,它肯定会提高性能 - 但是,增加量将取决于该索引的基数
标签: mysql sql select optimization group-by