LAG kullanan bir görünüm var.Pencere işlevleri görünümünde "nerede" kötü yürütme planı veriyor
CREATE VIEW V_ImportedReadingDay2
AS
SELECT
ID,
PlacementID,
LAG(Reading, 1) OVER (PARTITION BY MeterNumber ORDER BY Date) AS Val
FROM dbo.ImportedReadingDay
kullanıyorum diyoruz "Eğer NEREDE" sadece sorguyu çağırarak eğer daha kötü bir yürütme planı olur.
SELECT
ID,
PlacementID,
LAG(Reading, 1) OVER (PARTITION BY MeterNumber ORDER BY Date) AS Val
FROM dbo.ImportedReadingDay
WHERE (PlacementID = 12404)
SELECT *
FROM V_ImportedReadingDay2
WHERE (PlacementID = 12404)
Bu bilinen bir sorundur. Sorunu google yapabilirsiniz. İki çözüm buldum. Tablo değerli bir işlev kullanın veya LAG'yi görünümün dışına taşıyın.
ANCAK BUNLARIN KULLANIM KILAVUZU OLUŞTURMAK İÇİN BUNLARDAN BAŞVURABİLİRSİNİZ.
Bildiğim kadarıyla basitleştirilmişlerdir. – Kvasi
Aynı analiz hala geçerli - tablo davası karşısında doğrudan sorgulamada, mantıksal olarak * filter * ve * sonra * 'LAG', ve view sorgusunda, filtreden önce LAG'sindesiniz. Onlar hala mantıklı, farklı sorgular. –
Evet, LAG, aynı filtreyle eşleşmeyen bir satırdan alınabilmesi gerekiyordu; çünkü değer, Okuma değerini sıfırlamadan bir yerleşmeden diğerine taşınmış olabilecek bir metreye ait. Yine de, bir LAG değerinin bir önceki yerleşime doğru bir şekilde ait olabilse bile yararlı olmadığını fark ettim. Evet, aynı olmadıklarına dair doğrusınız. – Kvasi