2010-11-15 6 views
0

Lorsque j'essaie d'exécuter cette requête, l'utilisation du processeur de mon serveur mysql est de 100% et la page s'arrête. Je configure un index sur (Client_Code, Date_Time, Time_Stamp, Activity_Code, Employee_Name, ID_Transaction) cela ne semble pas aider. Quelles étapes puis-je suivre pour résoudre ce problème? De plus, il existe déjà un index sur la base de données si cela est important. MerciRequête MYsql et aide de la base de données

> $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"; 

Répondre

2

J'ai l'impression que c'est dû à ce signe> à côté de l'ET, quelle est l'expression que vous essayez de faire avec ça?

+0

Naw, c'est juste une ligne de la requête qui n'a pas été formatée correctement. Je l'ai corrigé. –

0

Pourriez-vous exprimer en anglais clair quels résultats vous recherchez avec votre requête? J'ai le sentiment que cette requête peut être réécrite; Cela pourrait résoudre votre problème de performance. Une double jointure sur elle-même pourrait nuire gravement aux performances.

Quelque chose comme "le nombre de transactions par employé pour aujourd'hui"?

Si c'est ce que vous êtes après, s'il vous plaît essayer et d'affiner de là:

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 
+0

La requête fait cela. – Eric

0

J'aurais juré que j'avais déjà posté ma réponse aujourd'hui ....

Pourquoi ne pas utiliser un double GROUP BY? Je pense que c'est ce que vous cherchiez ...

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