ym3015
یک شنبه 11 آبان 1393, 10:40 صبح
با سلام و وقت بخیر خدمت تمامی اساتید.
جداول زیر را در پایگاه داده داریم.
tblDevice(Id,Name,...)
tblPingResult(Id,DeviceId,DateTime,Result,....)
کوئری میخواستم که آخرین وضعیت دستگاه ها را بصورت یک جا بهم بده. (آخرین وضعیت یعنی Result مربوط به بزرگترین DateTime برای هر دستگاه)
برای اینکار از Query زیر استفاده کردم که هم خیلی زمانگیره هم خیلی حرفه ای نیست.
اساتید میتونن پیشنهاد برای بهینه سازی بهم بدن؟
آخه تابع ها خیلی کند هستن و تعداد رکوردهای جدول tblPingResult هر روز در حال افزایش هست. ( حدود 10 تا 15 هزار رکورد در هر روز)
SELECT
D.Id,
D.Name,
udfDevice_LastPingResult( D.Id ),
udfDevice_LastPingDateTime( D.Id )
FROM
tblDevice D
INNER JOIN tblPingResult PR
ON D.Device = PR.DeviceId
Group By
D.Id,D.Name
جداول زیر را در پایگاه داده داریم.
tblDevice(Id,Name,...)
tblPingResult(Id,DeviceId,DateTime,Result,....)
کوئری میخواستم که آخرین وضعیت دستگاه ها را بصورت یک جا بهم بده. (آخرین وضعیت یعنی Result مربوط به بزرگترین DateTime برای هر دستگاه)
برای اینکار از Query زیر استفاده کردم که هم خیلی زمانگیره هم خیلی حرفه ای نیست.
اساتید میتونن پیشنهاد برای بهینه سازی بهم بدن؟
آخه تابع ها خیلی کند هستن و تعداد رکوردهای جدول tblPingResult هر روز در حال افزایش هست. ( حدود 10 تا 15 هزار رکورد در هر روز)
SELECT
D.Id,
D.Name,
udfDevice_LastPingResult( D.Id ),
udfDevice_LastPingDateTime( D.Id )
FROM
tblDevice D
INNER JOIN tblPingResult PR
ON D.Device = PR.DeviceId
Group By
D.Id,D.Name