|  |  | 
          
            | ปัจจุบันฐานข้อมูลมีการเก็บข้อมูลของผู้ใช้งานในทุกวัน ซึ่งข้อมูลของแต่ละวันจะถูกเก็บลงในตารางของแต่ละเดือนเช่น ข้อมูลวันที่ 3 เดือนมีนา เก็บลงในตารางชื่อ table_mar ลักษณะนี้ เดือนๆนึงก็จะมีปริมาณของข้อมูลมหาศาล ( 100ล้าน row )
 
 แต่เนื่องจากมี query ที่ใช้ระยะเวลานานในการประมวลผลประมาณ 9-10 วิ
 และใน table ที่ดึงข้อมูล ถ้าเป็นเดือนปัจจุบันก็ยังมีข้อมูลผู้ใช้งานวิ่งเข้าปกติ ( write ) ส่งผลให้เมื่อมีคำสั่งที่ query นานๆ
 ทำให้ write ข้อมูลใหม่ไม่ได้ ( table lock )
 
 ในลักษณะแบบนี้พี่ๆมีแนวทางในการ optimize query หรือทำยังไงจะแก้ปัญหาลักษณะนี้ได้บ้างคะ ขอบคุณคะ
 ด้านล่างคือตัวอย่าง query ที่จำเป็นต้องใช้คือนับว่าในช่องรายการนี้มีคนชมกี่คนในช่วงเวลาที่กำหนดเอง
 
 select idช่องรายการที่ผู้ใช้ดู,idผู้ใช้,count(CASE WHEN เวลารับชม >= '2022-02-23 00:00:01'
 and เวลารับชม <= '2022-02-23 01:00:00' THEN '1' END )  as '00:00-01:00'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 01:00:01'
 and เวลารับชม <= '2022-02-23 02:15:00' THEN '1' END ) as '01:00-02:15'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 02:00:01'
 and เวลารับชม <= '2022-02-23 03:25:00' THEN '1' END ) as '02:00-03:25'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 03:00:01'
 and เวลารับชม <= '2022-02-23 04:00:00' THEN '1' END ) as '03:00-04:00'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 04:00:01'
 and เวลารับชม <= '2022-02-23 05:00:00' THEN '1' END ) as '04:00-05:00'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 05:00:01'
 and เวลารับชม <= '2022-02-23 06:00:00' THEN '1' END ) as '05:00-06:00'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 06:00:01'
 and เวลารับชม <= '2022-02-23 07:00:00' THEN '1' END ) as '06:00-07:00'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 07:00:01'
 and เวลารับชม <= '2022-02-23 08:00:00' THEN '1' END ) as '07:00-08:00'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 08:00:01'
 and เวลารับชม <= '2022-02-23 09:33:00' THEN '1' END ) as '08:00-09:33'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 09:00:01'
 and เวลารับชม <= '2022-02-23 10:00:00' THEN '1' END ) as '09:00-10:00'
 ,count(CASE WHEN เวลารับชม >= '2022-02-23 10:00:01'
 and เวลารับชม <= '2022-02-23 11:45:00' THEN '1' END ) as '10:00-11:45'
 
 
 
 from ข้อมูลผู้ใช้เดือน_2
 where เวลารับชม >= '2022-02-23 00:00:01'
 and เวลารับชม <= '2022-02-23 23:59:59'
 and idช่องรายการที่ผู้ใช้ดู > 0
 group by idช่องรายการที่ผู้ใช้ดู , idผู้ใช้
 
 
 
 Tag : PHP, Ms SQL Server 2008
 
 
 |  
            |  |  
            | 
              
                |  |  |  |  
                |  | 
                    
                      | Date :
                          2022-03-11 14:46:15 | By :
                          doodd | View :
                          675 | Reply :
                          2 |  |  |  
                |  |  |  |  |  
            |  |  
		            |  |