【发布时间】:2014-07-06 17:25:09
【问题描述】:
我目前正在编写一个查询,它将在 MySQL DB 中的一个 MISAM 表上运行多次。
查询需要很多行(可能高达 100,000+)并获取每月总计。我目前使用的 SQL 是
SELECT DATE_FORMAT(ct_cdatetime, "%m-%Y") AS Month, SUM(ct_total), SUM(ct_charge)
FROM client_transaction
WHERE (...omitted for this example...)
GROUP BY DATE_FORMAT(ct_cdatetime, "%m-%Y") ORDER BY ct_cdatetime ASC
我知道强制 MySQL 将日期转换为字符串的性能问题。这样做会更快和/或更好的做法
- 1) 保持原样
- 2) 选择所有行并在 PHP 中将它们分组到一个 大批。
- 3) 在数据库中有一个月-年 int 字段并更新它 当我添加行时(例如 2014 年 7 月的 714)?
【问题讨论】:
-
将您的month_year信息存储在单独的列中并在其上设置索引(如果这是经常使用或时间紧迫的查询)。
标签: mysql performance query-optimization