0

我需要创建一个新表,其中包含源表中度量值列的总和。源表非常大。

例如。源表

Category | Product | Sales
A        | P1      | 100 
B        | P2      | 200
C        | P3      | 300

查询就像:

SELECT Category, 
       Product, 
       SUM(Sales) 
FROM source_table 
GROUP BY Category.

没有where条件。

索引是否有助于加快进程?
任何加快查询速度的替代机制?

4

2 回答 2

0

索引是一个棘手的工具。如果您打算为表的列添加索引,您至少应该考虑:

1- 我在此列中有多少不同的值。2-记录总数与不同值的数量之间的比例如何。3- 我多久在此列上应用 where、group by 或 order by 子句。

正如@Kasey 回答所说,对于要看到的内容,您可以在类别列上添加一个索引,但是,这取决于您对该列拥有的不同值的数量。

于 2013-01-09T12:07:04.963 回答
0

由于它位于 GROUP BY 子句中,因此在 Category 上添加索引可能会有所帮助。但是你正在做一个完整的表转储,所以它可能会很慢。

可能更好的策略是为销售报告创建一个新表并根据您的业务需求填充它。如果它只能每天更新,则安排一个存储过程每晚运行以重新填充它。如果需要反映表的当前状态,那么可以在基表更新时使用触发器来更新报表表。或者,您可以在应用程序级别运行单独的查询以在更新基表时更新报告表。

于 2013-01-08T18:51:25.720 回答