Yüklemede bir işlevi kullanan bir sorgu var, böyle bir şey:
commentType = 'EL'
AND commentDateTime >= DATEADD(month,datediff(month,0,getdate()) - 13,0)
40K satır olan commentType üzerinde filtrelenmiş bir dizin var ve sorguyu çalıştırdığınızda, dizin arama için tahmini satır sayısı çok doğru (yaklaşık 11 K), ama sonraki adım (sıralama operatörü) tamamen istatistikleri ve yok sayar filtrelenmiş dizindeki toplam satır sayısını tahmin eder.
Bu neden oluyor? Hırsızlığın temellerini biliyorum ve sadece akıl sağlığını yerine gerçek bir tarihe (2014-01-01) ve voila'ya göre akıl sağlığı için test ettim ... Sıra sıra sayısını doğru tahmin etmeye başladı ...
Bu neden oluyor ve nasıl düzeltebilirim? Sabit bir tarihi geçemem ...
DATEADD(month, -13, DATEADD(day, 1-DATEPART(day, SYSDATETIME()))
fark olup olmadığını görebilir misin?
(commentType, commentDate)
orada daha iyi davranır mı? Sadece filtrelenmiş dizinler bazen planlardaki farklı noktalardaki tahminleri yanlış raporlayabilir. Tahmin, filtrelenen dizindeki toplam sayıyı bildirerek çok daha iyi görünüyor, ancak aslında planın yanlış gösteriliyor olması.
DATEADD(month,datediff(month,0,getdate()) - 13,0)
bana mantıklı gelmiyor. Bununla ne yapmaya çalışıyorsun? Geliştirilebilir / basitleştirilebilir mi?