【发布时间】:2014-10-16 19:58:22
【问题描述】:
我正试图弄清楚为什么我的查询需要这么长时间。每次查询通常需要大约 60 - 90 秒,并且会执行多次。
旧查询:
"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。此外,您可以通过使用说明了解您的查询是否正确使用索引,学习调试您的代码和查询,如果没有您的数据库结构,我们将无能为力。
-
你为什么使用没有聚合函数的
group by和select *? -
@DanyCaissy 我删除了大部分 PHP。它仍然需要在那里,以便提醒它它是一个变量。但是,在 custactivities 中也有一个键,我不能使用它们,因为有一个字段非常具体,我无法获取该数据。 @GordonLinoff 是的,
Select *我可以诚实地替换它。但我怀疑那会造成巨大的时差。没有聚合,因为没有一个函数符合我的需要。如果有的话,我只想替换select *。你想让我发show create table吗?