PDA

View Full Version : ارائه راه حل بهینه برای اجرای یک روال



Mishtolak
شنبه 09 مهر 1390, 01:36 صبح
با سلام
فرض کنید دو جدول با مشخصات زیر داریم:
جدول A: دارای فیلدهای
ID int - Startdate Date - EndDate Date
جدول B: دارای فیلدهای
ID int - DoneDate Date - StatusChk bit
و دو پارامتر varDateRange از نوع int و varCurrentDate از نوع Date
روال به این شکل است که میبایست بر اساس یکسری شرایط که در ادامه توضیح داده شده یک Insert رو در جدول B انجام بده.
به ازای هر رکوردی که در جدول A میباشد و varCurrentDate بین StartDate و EndDate باشد:
اگر هیج رکوردی با ID متناظر در جدول B وجود نداشته باشد روال Insert اجرا شود در غیر اینصورت:
1- اگر StatusChk هیچ رکوردی از رکوردهای متناظر در جدول B برابر False نیست و بزرگترین مقدار DoneDate+varDateRange برابر یا کوچکتر از varCurrentDate باشدروال Insert اجرا شود.
توضیح اینکه جدول A حدود 10000 رکورد داره و جدول B در هنگام نصب سیستم خالی هست ولی رکوردهاش به مرور زمان و روزانه بسرعت اضافه میشه.
من برای کنترل روال کد زیر رو نوشتم:


IF
(((select COUNT(ID) from B where ID= )==0) ||
((select COUNT(ID) from B where ID= AND StatusChK=1)==0 &&
(select MAX(Dateadd("day",varDateRange,DateDone)) =< varCurrentDate)))
BEGIN
Insert ...
END

ولی مطمئن نیستم سریعترین و مناسبترین کد باشه
اگه دوستان نظری دارن لطفا راهنمایی کنن
قبلا از توجه شما سپاسگذارم