当尝试执行此查询时,我的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";
答案 0 :(得分:2)
我感觉这是因为> AND旁边的标志,你试图用它做什么表达式?
答案 1 :(得分:0)
您能用简单的英语表达您查询后的结果吗?我有一种感觉,这个查询可以重写;这可能会解决您的性能问题。双重连接本身可能会严重影响性能。
类似“今天每位员工的交易数量”?
如果这就是您所追求的,请尝试并从那里进行改进:
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
答案 2 :(得分:0)
我可以发誓我今天已经在这里发布了我的回复......
为什么不使用双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