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