簡體   English   中英

長時間運行的MySQL查詢

[英]Long running mySQL query

第一次來這里。 我有一個MySQL查詢,只要有兩個表,它就會在6秒內運行。

sitedata is 4000 records, 10 fields.  
clientdata is 2000 records, 8 fields.

下面的查詢在6秒內運行通過添加此第三張表,我得到了400秒。

該表是可合並的,具有400條記錄和12個字段。

任何建議,將不勝感激。

SELECT sitedata.geozone AS geo, sitedata.week AS schweek, sitedata.PMcycle AS cycle,
       sitedata.sitenotes1 AS sitenotes1, sitedata.sitenotes2 AS sitenotes2, sitedata.sitezip AS sitezip,
       sitedata.sitecity AS sitecity, sitedata.sitestate AS sitestate,
       sitedata.siteaddress AS siteaddress, sitedata.clientsite1 AS ClientSite,
       clientdata.prefix AS prefix,
       consolidatortable.calldate AS indate, consolidatortable.duedate AS promisedate,
       consolidatortable.nte AS callnte,
       consolidatortable.description AS calldescription,
       consolidatortable.tracking AS POnumber
FROM ((sitedata INNER JOIN
       clientdata
       ON sitedata.clientname = clientdata.clientname  COLLATE utf8_unicode_ci
      ) INNER JOIN
      consolidatortable
      ON sitedata.portalname1 = consolidatortable.site  COLLATE utf8_unicode_ci);

首先,學習更簡單地編寫查詢:

SELECT sd.geozone AS geo, sd.week AS schweek, sd.PMcycle AS cycle,
       sd.sitenotes1 AS sitenotes1, sd.sitenotes2 AS sitenotes2, sd.sitezip AS sitezip,
       sd.sitecity AS sitecity, sd.sitestate AS sitestate,
       sd.siteaddress AS siteaddress, sd.clientsite1 AS ClientSite,
       cd.prefix AS prefix,
       ct.calldate AS indate, ct.duedate AS promisedate,
       ct.nte AS callnte,
       ct.description AS calldescription,
       ct.tracking AS POnumber
FROM sitedata sd INNER JOIN
     clientdata cd
     ON sd.clientname = cd.clientname COLLATE utf8_unicode_ci INNER JOIN
     consolidatortable ct
     ON sd.portalname1 = ct.site COLLATE utf8_unicode_ci;

FROM子句建議您應該在clientdata(clientname)consolidatortable(site)上具有索引。

但是, COLLATE可能會禁止使用任何索引。 這可能是性能問題的根本原因。 我建議您修復表格,使它們都使用相同的排序規則。 然后從查詢中刪除COLLATE

暫無
暫無

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

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