我想弄清楚爲什麼我的查詢需要這麼長時間。通常每個查詢需要大約60-90秒,並且執行多次。MySQL新加入的查詢需要太長的子查詢
舊查詢:
"select * from $table where type = '".$type."' and transdate >= '".$begdate."' and
transdate<='".$enddate."' and customerin (select customer from master
where targetaccount='Y') ";
新查詢:
$q = "SELECT * FROM activity INNER JOIN custactivities ON
activity.activityID = custactivities.activityID WHERE type = '$type' AND
transdate BETWEEN '$begdate' AND '$enddate' AND custnum IN
(SELECT customer FROM master WHERE targetaccount = 'Y')
GROUP BY custactivities.customer";
原始查詢約需0.15秒和新的查詢每次查詢需要大約60-90秒。
這確實有一些PHP,但查詢不是問題。
任何意見非常感謝。
打印生成的查詢,我們不需要看到你的PHP。另外,你可以通過使用explain來了解你的查詢是否適當地使用了索引,學會調試你的代碼和查詢,如果沒有你的數據庫結構,我們也無能爲力。 – 2014-10-16 20:02:10
爲什麼使用'group by'沒有聚合函數和'select *'? – 2014-10-16 20:04:38
@DanyCaissy我拿出了大部分的PHP。它仍然需要在那裏,以提醒它是一個變量。然而,還有一個關鍵的習慣,然而,他們中沒有一個我可以使用,因爲有一個領域非常具體,我無法獲得這些數據。 @GordonLinoff是的,'選擇*'我可以誠實替換。但我懷疑這會造成巨大的時差。沒有聚合,因爲沒有任何功能匹配我所需要的。如果有的話,我只需要替換'select *'。 你想讓我發佈'show create table'嗎? – Twister1002 2014-10-16 20:20:09