بیایید بگوییم شما یک دیدگاه دارید:
CREATE VIEW dbo.v_SomeJoinedTables AS
SELECT
a.date,
a.Col1,
b.Col2,
DENSE_RANK()
OVER(PARTITION BY a.date, a.Col2 ORDER BY a.Col3) as Something
FROM a JOIN b on a.date = b.date
من دریافتم که عملکرد:
SELECT *
FROM v_SomeJoinedTables
WHERE date > '2011-01-01'
بسیار بدتر از
SELECT *,
DENSE_RANK()
OVER(PARTITION BY a.date, a.Col2 ORDER BY a.Col3) as Something
FROM a JOIN b ON a.date = b.date
WHERE a.date > '2011-01-01'
است. من بسیار تعجب می کنم که برنامه پرس و جو برای این دو عبارت یکسان نیست.
من همچنین از یک تابع با ارزش جدول inline استفاده کرده ام اما باز هم 100-1000 برابر طولانی تر از کدی است که من منطق مشاهده را کپی و جای گذاری می کنم.
ایده ای دارید؟