Over Partition By
ve Group By
arasındaki farkla ilgili birkaç soruyu daha önce göndermiş olsa da, bunun daha iyi performans gösterdiği konusunda kesin bir sonuç bulamadım.SQL Server Performansı Arası Bölme ve Gruplandırma Arasındaki Karşılaştırma
Over (Partition By)
Over (Partition By)
'un daha iyi bir yürütme planına sahip gibi göründüğü bir simple scenario at SqlFiddle kurarım (ancak bunlara aşina değilim).
Tablolardaki veri miktarı bunu değiştirmesi gerekiyor mu? Over (Partition By)
, sonuçta daha iyi performans gösteriyor mu?
Ne aldığınızdan emin değilim. Elbette, 'byition' ile 'group by' arasında benzerlikler var, ancak hala farklı kullanım durumlarıyla iki farklı işlem var. Ve neden ikinci yürütme planının daha iyi olduğunu düşünüyorsunuz? Her ikisi de aynı kümelenmiş dizin taramalarını yapmak zorundadır, ancak ikincisi bunu yaparken daha az göreceli zaman harcıyor, bu yüzden açıkça daha uzun genel (sadece bu farklı türden dolayı yaklaşık iki kat daha uzun). – Luaan
Birinin diğerinden daha iyi performans göstereceği evrensel bir kural yoktur. Performansı * hedefler * belirleyin, ardından sorunu çözen basit bir kod yazın. Ardından * performansı * ölçün. Sadece performans kabul edilemezse, o zaman değişiklik yapmayı düşünmelisiniz. Ancak, sorgu * doğruysa *, büyük olasılıkla, örn. indeksler arasında değişim olması gerekecek, bu ikisi arasında değişen bir fark yaratacaktır. (Birinin * diğerinden daha iyi performans gösterdiğini ve bu iki yöntem arasındaki sorguları mekanik olarak dönüştürmenin mümkün olsaydı, eniyileyici zaten bunu yapıyordu) –
@Luaan: Benim açımdan, 2 yollu bir geliştirici bir şey yapmak ve aynı sonucu elde etmek, hepsi aşağıya doğru kayıyor: bir yol diğerinden daha iyi performans gösteriyor mu? Değilse, daha yaygın Grup By ile yapışırız. Bir meslektaşım, şimdi hakkında öğrenmek istediğim ** üzerinde ** ile seçkin alternatifi teklif etti. – Veverke