正在为正在求和的列创建索引比没有索引快吗?索引总和列
索引总和列
回答
对不起,你不清楚你在问什么。
你是问,如果添加数量上的指标,将加快这种查询的
SELECT product, sum(quantity) FROM receipts
GROUP BY product
?
如果这是问题,那么答案是否定的。一般来说,当你需要在很多行中找到几行时,索引是有帮助的;在这里你需要所有的行,所以索引没有帮助。
有一个模糊的异常(很少适用于大多数数据库优化器可能不会执行此技巧)。如果查询恰好是
SELECT sum(foo) FROM bar
,那里是于foo的一个指标,酒吧是很多列的表,可以在完整的索引读取,招致比如果你读了一个较小的命中底层表,并直接从索引中获得答案 - 根本不必触摸“真实”表!然而,这是一个相当少见的情况,你需要测试你的优化器是否知道这么做,然后才依赖于这个。
编号索引通过限制需要多少次检查来改善搜索。无论如何,汇总函数(count,max,min,sum,avg)都必须遍历列中的所有条目。
但是,如果所有这些列都出现在索引本身中,则无需访问实际表格,从而使得总和比没有索引 – 2017-07-20 06:29:57
如果您希望加快求和速度,可以预先实现结果。在Oracle上,使用Materialized Views,在MS SQL上使用Indexed Views。
您的具体问题“是创造正被总结一列的索引比没有索引快?”,答案是否定的
的回答你的问题在于对斯宾塞的回答是:
“汇总函数(计数,最大值,最小值,总和,平均值)必须遍历列中的所有条目进行求和,无论如何。”
刚刚澄清了斯宾塞答案中列的上下文。尽管如此,他的回答是正确的。
如果索引覆盖,它通常会更快。表格中的列数与索引中的数字之间的差异将决定更快的速度。另外,如果有任何过滤标准,它可能会更快。
我发现索引使用此查询时,在其中一列(这里的ProductID)帮助:
SELECT的ProductID,SUM(数量)收到来自WHERE的ProductID = 1 GROUP BY的productid
我的一个查询一旦我添加索引,就从45秒变为几乎瞬间。
- 1. 使用行索引和列索引查找矩阵中的最小值总和
- 2. 使用列表元素的总和查找列表的索引
- 3. 索引页上的列总数active_admin rails
- 4. 如何按行索引和列索引
- 5. Numpy向量化总和索引
- 6. Excel VBA搜索+总和引擎
- 7. 总和使用索引vba excel
- 8. 具有类似索引值的总和
- 9. 创建奇数索引的总和python
- 10. 如何获取列表中索引的总和?
- 11. 使用rxjava的列表的索引总和
- 12. 索引0值匹配的总和列表值?
- 13. NSString的行索引和列索引的字符串索引
- 14. 隐藏datagridview列和索引
- 15. 索引列和顺序
- 16. MySQL和索引与多列
- 17. 多列索引和ORDER BY
- 18. 索引矢量和阵列,+:
- 19. 行和列的索引data.table
- 20. numpy的得到的行索引和列索引2D阵列
- 21. 索引器是否总是引用一个离散序列?
- 22. 索引,索引阵列
- 23. ListItem索引总是-1?
- 24. 如何检索多列的总和?笨
- 25. 一列索引对2列索引
- 26. 如何获取列表中索引值的总和和平均值?
- 27. SQL索引:无,单列和多列
- 28. 列表和索引函数列表[Python]
- 29. 列表索引Python和列表理解
- 30. 索引索引和reindexing
+1的情况快,因为这是索引的一个有趣用法。 – NotMe 2009-01-13 04:05:24
+1好建议:查看优化器生成的执行计划。 – 2009-01-13 04:24:56