簡體   English   中英

使 SQL 查詢優化以更快地返回結果

[英]Make SQL query optimize to return result faster

我有一張包含數百萬條記錄的表。 我想獲取當前日期的前 10 名收入者(通過對 user_id 進行分組並添加同一用戶的earnings字段值來計算),我為此創建了以下查詢。

SELECT user_id, SUM(earnings) AS earn
FROM statistics
WHERE created LIKE "2022-03-15%"
GROUP BY user_id
ORDER BY earn DESC
limit 10

查詢給出了預期的結果,但問題是它需要大約 90 秒來完成處理和所有操作。

是否可以對上述查詢進行任何修改,以使其在 10-15 秒或更短時間內更快地獲得結果?

WHERE created LIKE "2022-03-15%"

-->

WHERE created >= "2022-03-15"
  AND created  < "2022-03-15" + INTERVAL 1 DAY

前者不是“可搜索的”,因為它必須將DATETIME轉換為字符串才能執行LIKE 后者很可能非常有效地使用索引idx_created_userid

是否可以對上述查詢進行任何修改,以使其在 10-15 秒或更短時間內更快地獲得結果?

不,您無法在查詢中更改任何內容來彌補表上索引的不足。 每次運行該查詢時,MySQL 都必須查看表中的每一行,您說的是大約 8,000,000 行。 索引使得 MySQL 只需要查看相關行的一小部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM