繁体   English   中英

MYsql查询和数据库帮助

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM