簡體   English   中英

MySQL不穩定查詢時間

[英]MySQL Erratic Query Times

我正在使用MySQL版本5.5.14從500萬行的表中運行以下查詢:

SELECT P.ID, P.Type, P.Name, P.cty
     , X(P.latlng) as 'lat', Y(P.latlng) as 'lng'
     , P.cur, P.ak, P.tn, P.St, P.Tm, P.flA, P.ldA, P.flN
     , P.lv, P.bd, P.bt, P.nb
     , P.ak * E.usD as 'usP' 
FROM PIG P 
  INNER JOIN EEL E 
    ON E.cur = P.cur 
WHERE act='1' 
  AND flA >= '1615' 
  AND ldA >= '0' 
  AND yr >= (YEAR(NOW()) - 100) 
  AND lv >= '0' 
  AND bd >= '3' 
  AND bt >= '2' 
  AND nb <= '5' 
  AND cDate >= NOW() 
  AND MBRContains(LineString( Point(-65.6583, -87.8906)
                            , Point(65.6583, 87.8906)
                            ), latlng) 
  AND Type = 'g' 
  AND tn = 'l' 
  AND St + Tm - YEAR(NOW()) >= '30' 
HAVING usP BETWEEN 300/2 AND 300 LIMIT 100;

第一次是313秒,第二次是48秒,第三次是101秒。 根據說明選擇,查詢計划的類型為:范圍; 鍵:索引和額外:在表P上使用where,然后鍵入:eq_ref和鍵:在表E上使用primary。此查詢不使用查詢緩存。 我的問題是: “為什么查詢時間如此顯着不同?”

干杯本

在分析查詢時使用SQL_NO_CACHE

SELECT SQL_NO_CACHE P.ID, P.Type, ...

在第二次運行中花費較少時間的原因是查詢的結果已由MySQL緩存。

SQL_NO_CACHE禁用此查詢的緩存。 您可以使用FLUSH QUERY CACHE清除查詢緩存。

暫無
暫無

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

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