 |
|
ปัจจุบันฐานข้อมูลมีการเก็บข้อมูลของผู้ใช้งานในทุกวัน ซึ่งข้อมูลของแต่ละวันจะถูกเก็บลงในตารางของแต่ละเดือนเช่น
ข้อมูลวันที่ 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 :
531 |
Reply :
2 |
|
 |
 |
 |
 |
|
|
|
 |