簡體   English   中英

MySQL查詢提高性能

[英]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.

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