[英]MYsql query and DB help
当尝试执行此查询时,我的mysql服务器的cpu使用率达到100%,页面停滞了。 我设置了一个索引(Client_Code,Date_Time,Time_Stamp,Activity_Code,Employee_Name,ID_Transaction)它似乎没有帮助。 接下来我可以采取哪些步骤解决此问题? 如果重要的话,数据库上也有一个索引。 谢谢
> $sql = "SELECT m.Employee_Name, count(m.ID_Transaction)
>FROM ( SELECT DISTINCT Client_Code FROM Transaction)
> md JOIN Transaction m ON
> m.ID_Transaction = ( SELECT
> ID_Transaction FROM Transaction mi
> WHERE mi.Client_Code = md.Client_Code AND Date_Time=CURdate() AND Time_Stamp!='' AND
> Activity_Code!='000001'
> ORDER BY m.Employee_Name DESC, mi.Client_Code DESC, mi.Date_Time DESC,
> mi.ID_Transaction DESC LIMIT 1 )
> group by m.Employee_Name";
我有一种感觉,这是由于AND旁边的那个>签名,你试图用它做出什么表达?
你能用简单的英语表达你的查询结果吗? 我觉得这个查询可以重写了。 这可能会解决您的性能问题。 自身的双重连接可能会严重损害性能。
像是“今天每个员工的交易数量”?
如果这就是您所追求的,请尝试并从那里进行改进:
select m.Employee_Name, count(m.ID_Transaction)
from Transaction m
where m.Date_time=CURdate()
and m.Time_Stamp != ''
and m.Activity_Code != '000001'
group by m.Employee_Name
我发誓我今天已经在这里发表了我的回应。
为什么不使用双GROUP BY
? 我想这就是你要找的......
SELECT Employee_Name, count(ID_Transaction) FROM Transaction WHERE Date_time=CURdate() AND Time_Stamp != '' AND Activity_Code != '000001' GROUP BY Client_Code, Employee_Name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.