mySQL - 基于标志对行进行求和

时间:2015-03-23 01:56:58

标签: mysql

我有一个查询,其中我总结了几百万行,看起来大致如下:

SELECT
    SUM(IF(FlagColumn = 1, dollars, 0)) as booked,
    SUM(IF(FlagColumn = 0, dollars, 0)) as billed
FROM
   records
WHERE
   processedDate BETWEEN ? AND ?

希望有人可以提出一种方法来编写可能有更好性能的方法,因为这个查询非常慢。由于标志列的值会随着时间的推移而发生变化,因此无法提前打破dollars列,因此会dollars重新分类。

1 个答案:

答案 0 :(得分:1)

在桌面上构建综合索引:records(processedDate, flagcolumn, dollars)。这是查询的最佳索引。