Re[5]: MSSQL - переменные в WHERE
От: amalakhov  
Дата: 12.05.10 10:37
Оценка:
Уже лучше, спасибо — секунд 8 против 1, но execution plan всё равно по сравнению с 1м запросом выглядит монстрообразно


SELECT UTC_Time, SC2  
FROM Frames JOIN Science_data ON Frames.id = Science_data.id   
WHERE UTC_time BETWEEN '2009-09-16 21:43:14' AND '2009-09-16 23:43:14' AND GoodToMap = 1

       |--Nested Loops(Inner Join, OUTER REFERENCES:([Frames].[id]) WITH PREFETCH)
       |--Filter(WHERE:([Frames].[GoodToMap]=1))
       |    |--Bookmark Lookup(BOOKMARK:([Bmk1000]), OBJECT:([LEND_FLIGHT].[dbo].[Frames]) WITH PREFETCH)
       |         |--Index Seek(OBJECT:([LEND_FLIGHT].[dbo].[Frames].[IX_UTC]), SEEK:([Frames].[UTC_time] >= 'Sep 16 2009  9:43PM' AND [Frames].[UTC_time] <= 'Sep 16 2009 11:43PM') ORDERED FORWARD)
       |--Clustered Index Seek(OBJECT:([LEND_FLIGHT].[dbo].[Science_data].[PK_Science_data]), SEEK:([Science_data].[id]=[Frames].[id]) ORDERED FORWARD)



SELECT UTC_Time, SC2  
FROM   Frames
              INNER LOOP JOIN Science_data
              ON  Frames.id = Science_data.id  
WHERE UTC_time BETWEEN @curStart AND DATEADD(hour, 2, @curStart) AND GoodToMap = 1


  |--Parallelism(Gather Streams)
       |--Nested Loops(Inner Join, OUTER REFERENCES:([Frames].[id]) WITH PREFETCH)
            |--Sort(ORDER BY:([Frames].[id] ASC))
            |    |--Hash Match(Inner Join, HASH:([Bmk1000])=([Bmk1000]), RESIDUAL:([Bmk1000]=[Bmk1000]))
            |         |--Bitmap(HASH:([Bmk1000]), DEFINE:([Bitmap1005]))
            |         |    |--Parallelism(Repartition Streams, PARTITION COLUMNS:([Bmk1000]))
            |         |         |--Index Seek(OBJECT:([LEND_FLIGHT].[dbo].[Frames].[IX_UTC]), SEEK:([Frames].[UTC_time] >= [@curStart] AND [Frames].[UTC_time] <= dateadd(hour, 2, [@curStart])) ORDERED FORWARD)
            |         |--Parallelism(Repartition Streams, PARTITION COLUMNS:([Bmk1000]), WHERE:(PROBE([Bitmap1005])=TRUE))
            |              |--Index Seek(OBJECT:([LEND_FLIGHT].[dbo].[Frames].[IX_GoodToMap]), SEEK:([Frames].[GoodToMap]=1) ORDERED FORWARD)
            |--Clustered Index Seek(OBJECT:([LEND_FLIGHT].[dbo].[Science_data].[PK_Science_data]), SEEK:([Science_data].[id]=[Frames].[id]) ORDERED FORWARD)


Хотя это видимо уже я пошел читать rtfm про inner loop... Спасибо в любом случае
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.