简单查询耗时较长(约15秒)

jum4pzuy  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(309)

我有以下查询和php代码:

$sql = "SELECT DISTINCT j.OrderID, DATE_FORMAT(j.StartDate,'%W %e %M %Y %H:%i:%s') AS StartDate, 
                        j.Object, j.Signature,  j.PrintedWithBSN, j.PrintedWithoutBSN,
                        p.ProjectID AS ProjectName, p.City, p.PostalCode, p.StreetName, 
                        c.Name AS CustomerName
        FROM JobOrder j
        INNER JOIN Project p ON p.ProjectID = j.ProjectID
        INNER JOIN Customer c ON c.CustomerID = p.CustomerID
        INNER JOIN OrderEmployer oe ON j.OrderID=oe.OrderID
        INNER JOIN Employer e ON oe.EmployerID=e.EmployerID
        WHERE j.Removed = 0 AND Date(j.StartDate)=:StartDate
        ORDER BY e.Firstname, p.WorkDone, j.Signature, j.StartDate DESC, c.Name";

$query = $database->prepare($sql);

$query->execute(array('StartDate' => $date));";

使用microtimephp函数,我发现 $query->execute 完成大约需要15秒。一年前,查询只需几秒钟就可以执行。我不知道是什么导致了额外的等待时间,是我写的查询不好吗?
-------编辑:我的解释结果:

-------edit2:我的索引是(每个表):
customer:主键:customerid唯一键:name
雇主:主键:employerid唯一键:用户名
joborder:主键:orderid键:projectid
orderemployer:主键:orderid,employerid键:employerid
项目主键:projectid键:customerid、contactpersonid、contactpersonprojectid

ldxq2e6h

ldxq2e6h1#

通过遵循uuerdo和barmar的提示,我修复了长查询时间。通过简单地向where子句使用的字段添加索引,我将查询时间缩短到了0,1秒以内(我甚至看到000019192695617676秒)!

相关问题