正在爲正在求和的列創建索引比沒有索引快嗎?索引總和列
索引總和列
回答
對不起,你不清楚你在問什麼。
你是問,如果添加數量上的指標,將加快這種查詢的
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