Mysql sorgu rework Eğlence

0 Cevap php

Bu sorguyu yürütmek çalışırken benim mysql sunucu cpu kullanımı% 100 gider ve sayfa sadece tezgahları. Ben kurulum (Client_Code, Date_Time, Zaman_damgası, Activity_Code, Employee_Name, ID_Transaction) üzerinde bir dizin yardım gibi görünmüyor. Şimdi bu sorgu yüzden onun kadar sunucuda vergi değil yapmak için farklı bir yol gerekir. Aşağıda bunu yapmak için gereken ne bir açıklamasıdır. Hepsini bulmuştur kez ardından specfic gün için her istemci kodu altında son girişi arar açıklamak. Daha sonra Eric ve Jerry örneğin vardır, bu girişlerin kaç sayar. Hasta henüz tanıdık değilim kodu görmek gerekir. Yardım için teşekkür ederiz.

İşte bu sorgu ne olduğunu

Veritabanı bilgisi

ID_Transaction | Client_Code | Employee_Name | Date_Time |Time_Stamp| Activity_Code  
1              | 00001       |  Eric         |  11/15/10 | 7:30AM   |  00023  
2              | 00001       |  Jerry        |  11/15/10 | 8:30AM   |  00033  
3              | 00002       |  Amy          |  11/15/10 | 9:45AM   |  00034  
4              | 00003       |  Jim          |  11/15/10 | 10:30AM  |  00063  
5              | 00003       |  Ryan         |  11/15/10 | 12:00PM  |  00063  
6              | 00003       |  bill         |  11/14/10 | 1:00pm   |  00054    
7              | 00004       |  Jim          |  11/15/10 | 1:00pm   |  00045  
8              | 00005       |  Jim          |  11/15/10 | 10:00 AM |  00045  

Yukarıdaki sorgu bilgi alır ve böylece gibi sayar. Her client_code için en son giriş tarafından. Bu durumda sorgu gibi görünecektir. Php sonra.

Jerry = 1    
2               | 00001       |  Jerry        |   11/15/10 |   8:30AM |   00033     
Amy = 1   
3               | 00002       |  Amy          |   11/15/10 |   9:45AM |  00034   
Ryan = 1  
5               | 00003       | Ryan          |   11/15/10 |   12:00PM | 00063  
Jim = 2  
7               | 00004       | Jim           |   11/15/10 |   1:00pm  | 00045  
8               | 00005       | Jim           |   11/15/10 |   10:00 AM| 00045      

Ve sorgu:

 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    



+----+--------------------+-------------+--------+------------------------+--------------+---------+----------------+--------+----------------------------------------------+
| id | select_type        | table       | type   | possible_keys          | key          | key_len | ref            | rows   | Extra                                        |
+----+--------------------+-------------+--------+------------------------+--------------+---------+----------------+--------+----------------------------------------------+
|  1 | PRIMARY            | <derived2>  | ALL    | [NULL]                 | [NULL]       | [NULL]  | [NULL]         |    347 | Using temporary; Using filesort              |
|  1 | PRIMARY            | m           | index  | [NULL]                 | search index | 924     | [NULL]         |  29255 | Using where; Using index; Using join buffer  |
|  3 | DEPENDENT SUBQUERY | mi          | ref    | search index,secondary | search index | 18      | md.Client_Code |   2926 | Using where; Using temporary; Using filesort |
|  2 | DERIVED            | Transaction | range  | [NULL]                 | search index | 18      | [NULL]         |     10 | Using index for group-by                     |
+----+--------------------+-------------+--------+------------------------+--------------+---------+----------------+--------+----------------------------------------------+

0 Cevap