[英]Mysql Query Improve Performance
我有以下查詢:
SELECT COUNT(sid),fDate,COUNT(DISTINCT(cid))
FROM forwarding
WHERE fDate BETWEEN "2011-06-01" AND "2011-06-30"
GROUP BY fDate
解釋給我以下輸出:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE forwarding index fDate,fDate_2 fDate_2 3 1481127 Using where
您會看到有很多數據。 總工作時間為12秒。 如何提高性能? 我不知道設置索引還能做些什么。
該表有我的索引:
fDate (fDate, f_shop)
fDate2(dDate),
f_shop(f_shop)
謝謝您的幫助。
更新:
現在,我在where子句中添加了一個列,查詢的速度比以前慢得多。
SELECT COUNT(sid),fDate,COUNT(DISTINCT(cid)) FROM forwarding
WHERE fDate BETWEEN "2011-06-01" AND "2011-06-30" AND f_shop=10077 GROUP BY fDate
我在forwardDate和f_shop上有一個索引,但是性能很慢。 什么是完美的解決方案? 謝謝
除了ypercube提供的答案之外,您還在查詢要尋找特定商店的地方...我會在上面找到索引
(f_shop,fdate,cid)以確保索引的所有3個部分都與前面的最小WHERE子句限定符一起使用。.在您的上一個示例中,您已包括對特定商店的興趣...
SELECT
COUNT(sid),
fDate,
COUNT(DISTINCT(cid))
FROM
forwarding
WHERE
f_shop=10077
AND fDate BETWEEN "2011-06-01" AND "2011-06-30"
GROUP BY
fDate
到目前為止,MySQL 如何使用索引回答了我所有與MySQL索引有關的問題。 可能值得一讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.