1
A
回答
0
這個問題是不可能的,知道整個查詢的樣子。有些組bys可能過於昂貴,而另一些則非常便宜,這一切都取決於數據庫中的索引如何設置,如果您按組的值可以緩存等。
例如,這是一個非常便宜分組:
CREATE TABLE t (a INT, KEY(a));
SELECT * FROM WHERE 1 GROUP BY a;
由於a是索引。
但是對於像這樣的東西,它是非常昂貴的,因爲它需要一個表掃描。
CREATE TABLE t (a INT);
SELECT * FROM WHERE 1 GROUP BY a;
一般來說,如果密鑰不可用,則數據庫會在內存中的條款創建一個臨時表組,經過所有的值,用在指數的相應行插入每個值到臨時表結果集,那麼它將從臨時表中選擇,從每列中選擇第一行並將其作爲結果發回。根據是否使用每個組by子句的「額外」行(即使用MAX(),GROUP_CONCAT()或類似),它將需要再次獲取所有行。
您可以使用EXPLAIN找出MySQL將使用的策略'Extra'(按照執行成本的升序)'使用索引'(如果可以使用索引)'使用filesort'如果讀取所有行磁盤將是必要的,並且列將包含「使用臨時」(如果需要臨時)
相關問題
- 1. 複雜的分組查詢
- 2. MongoDB - 複雜的分組查詢
- 3. 複雜的分組SQLite的查詢
- 4. 複雜分組
- 5. mysql查詢分組
- 6. MySQL 5.6:具有分組參數的複雜查詢
- 7. 在一個複雜的MySQL查詢中排序和分組
- 8. 按時間分組的MySql查詢
- 9. MySql查詢 - 按日期範圍分組?
- 10. MySQL查詢排序/分組性能
- 11. 分析查詢到數組
- 12. 算法複雜性分析
- 13. 複雜的MySQL對話組查詢?
- 14. MySQL查詢分組問題
- 15. mysql分組mre比查詢
- 16. 高級MySQL分組查詢
- 17. MySql slow_log查詢分組
- 18. MySQL查詢的分組列
- 19. Mysql Max與分組查詢
- 20. 分組多個MySQL查詢
- 21. 分組在MySQL查詢
- 22. 按子查詢分組
- 23. 分析複雜
- 24. MySQL查詢分組子查詢問題
- 25. MySql的拆分查詢組百分比
- 26. Oracle Sql查詢按分組劃分
- 27. 複雜的組SQL查詢
- 28. SQL複雜的組查詢
- 29. 複雜陣列分組
- 30. 星火複雜的分組
SQL旨在使您的dbms儘可能優化。無論如何,在我看來,只是做一些分析將是你最好的選擇。 – Jasper 2012-04-21 14:31:16