مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

rezayeman

عضویت از 1395/07/17

علت تفاوت در زمان اجرای کوئری

  • شنبه 5 تیر 1400
  • 15:40
تشکر میکنم

با سلام

من یک کوئری دارم به شکل زیر

	DECLARE @SDTE VARCHAR(10);
	DECLARE @EDTE VARCHAR(10);
	Declare @PRS Int
	Set @PRS=44301
	Set @SDTE='1400/01/01'
	Set @EDTE='1400/01/31'

	SELECT calen.calen_pk,
       calen.shift_fk,
       shift.shift_num,
       calen.gadays_fk AS dte,
       calen.calen_hld,
       @PRS pers,
       gadays.wek,
       shift.shift_pk,
       shift.shift_des,
       goroh.goroh_pk,
       goroh.goroh_num,
       goroh.goroh_des,
       sh_day.sh_days
     FROM
       gadays,
       calen,
       shift,
       goroh,
       sh_day
     WHERE
       gadays.DTE between @SDTE AND @EDTE

        and dbo.get_shift(@PRS, gadays.dte) = calen.shift_fk
       AND goroh_pk = dbo.get_goroh(@PRS, gadays.dte)
       AND calen.gadays_fk = gadays.dte
       AND shift.shift_pk = calen.shift_fk
       AND sh_day.sh_day_pk = calen.sh_day_fk

کوئری بالا حدود 12 ثانیه زمان برای اجرا لازم داره

همین کوئری به شکل زیر

	DECLARE @SDTE VARCHAR(10);
	DECLARE @EDTE VARCHAR(10);
	Declare @PRS Int
	Set @PRS=44301
	Set @SDTE='1400/01/01'
	Set @EDTE='1400/01/31'

	SELECT calen.calen_pk,
       calen.shift_fk,
       shift.shift_num,
       calen.gadays_fk AS dte,
       calen.calen_hld,
       @PRS pers,
       gadays.wek,
       shift.shift_pk,
       shift.shift_des,
       goroh.goroh_pk,
       goroh.goroh_num,
       goroh.goroh_des,
       sh_day.sh_days
     FROM
       gadays,
       calen,
       shift,
       goroh,
       sh_day
     WHERE
       gadays.DTE between '1400/01/01' AND '1400/01/31'
        and dbo.get_shift(@PRS, gadays.dte) = calen.shift_fk
       AND goroh_pk = dbo.get_goroh(@PRS, gadays.dte)
       AND calen.gadays_fk = gadays.dte
       AND shift.shift_pk = calen.shift_fk
       AND sh_day.sh_day_pk = calen.sh_day_fk

 

کمتر از 1 ثانیه اجرا میشه

تنها تفاوتشون اینه در کوئری اول تاریخ به صورت متغیر ست شده در کوئری دوم مستقیم توی خود کوئری ست شده

علت چیه؟

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند rezayeman

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)