簡體   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