نوشته شده توسط
samad1987
اصلا به تعداد انسانها میتونی کد بزنی که کار کنه
select * from (select *from table where date > date1) where data < date2
جوابای دوستای عزیزم هم کاملا درسته
ولی این سرعتش بیشتره
چرا که از بین جدولی کوچیکتر سرچ میزنه
and که کلا خیلی کار رو کند میکنه
سلام.
این حرف در این مثال اشتباه هست.
ما زمانی این کار رو انجام میدیم که بخوایم از روی یه نتیجه برگشتی دوباره جواب بگیریم. در اینصورت ابتدا اون جواب برگشتی اولیه رو ریز میکنیم (همون select داخلی) و بعدش از روی اون جواب کوچیک شده، دنبال نتیجه دلخواه میگردیم. ولی در این مثال شما یک select رو تبدیل به دو select کردی که کار بهینه ای نیست.
برای اینکه در عمل نتیجه کار رو ببینید یه جدول با چند هزار رکورد رو در نظر بگیرید. با کد زیر زمان اجرای کوئری ها رو می سنجیم :
کد شما :
DECLARE @start_time DATETIME
SET @start_time = GETDATE()
-- my query
select * from (select * from Table_1 where '1391/10/01' > date1)a1 where '1391/04/01' < date2
-- calculate runtime query
SELECT RTRIM(CAST(DATEDIFF(MS, @start_time, GETDATE()) AS CHAR(10))) AS 'RunTime'
کد دوستانی که در پست های 1 و 2 جواب دادن :
DECLARE @start_time DATETIME
SET @start_time = GETDATE()
-- my query
--select * from Table_1 where '1391/10/01' > date1 and '1391/04/01' < date2
-- calculate runtime query
SELECT RTRIM(CAST(DATEDIFF(MS, @start_time, GETDATE()) AS CHAR(10))) AS 'RunTime'
موفق باشید.