Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Raporlamada hangisi daha performanslıdır View? Store Procedure?
#11
(23-12-2017, Saat: 16:00)yhackup Adlı Kullanıcıdan Alıntı: Bildiğime göre viewler tabloları izler ve,  oluşturulan viewlerin bağlı olduğu tablolarda değişiklik olmadığı sürece yeniden derlenmez bu şekilde temporary de hazır bekler.

Düşündüğünüz gibi view'ler hazır halde beklemezler. Dediğiniz gibi hazır halde bekleyen ve bağımlı tablolarda değişiklik olduğunda otomatik güncellenen tablolara Sql Server'da Indexed View, Oracle'da Materialized View denir. Bu tür View'lerde index (full text index dahil) oluşturmak da mümkündür. Kanaatimce yukarıdaki çözümlerin en hızlısı bu çözümdür. Fakat Indexed View oluşturmak için bazı koşullar gerekir.

Indexed View Oluşturmanın Ön Şartları:
Bir View üzerine Clustered Index tanımlamadan önce bazı ön şartların sağlanmış olması gerekmektedir. Bu ön şartlardan bazıları aşağıdaki gibidir:
  • İlgili View’in içinde başka bir View kullanılamaz.
  • View’in içinde kullanılan tüm tablolar View ile aynı veritabanında ve aynı schema sahibine ait olmak zorundadır.
  • View SchemaBinding opsiyonu ile oluşturulmak zorundadır.
  • View içinde kullanılan UDF (User Defined Functions) ‘larda SchemaBinding opsiyonu ile oluşturulmuş olmalıdır.
  • View içinde kullanılan tablo ve UDF’ler SchemaName+ObjectName şeklinde kullanılmalıdır. Örneğin Person.Address gibi.
  • View’de hesaplama fonksiyonu kullanıldı ise select kısmında COUNT_BIG(*) kullanılması zorunludur.
  • Ayrıca select kısmı için aşağıdaki engeller mevcuttur.
    • Select * şeklinde bir kullanıma izin verilmez. Kolon adları belirtilmek zorundadır.
    • Aynı kolon adı 1 den fazla kullanılamaz.(“Select col1 as a, col1 as b from tbl1” gibi)
    • CTE (Common Table Expression) kullanımına izin verilmez.
    • TOP ve Order By kullanılamaz.
    • Count kullanılamaz. Count yerine Count_Big kullanılmalıdır.
Kaynak:
http://www.sqlserveronculeri.com/1/Artic...tirin.aspx
WWW
Cevapla
#12
(23-12-2017, Saat: 17:11)csunguray Adlı Kullanıcıdan Alıntı:
(23-12-2017, Saat: 16:00)yhackup Adlı Kullanıcıdan Alıntı: Bildiğime göre viewler tabloları izler ve,  oluşturulan viewlerin bağlı olduğu tablolarda değişiklik olmadığı sürece yeniden derlenmez bu şekilde temporary de hazır bekler.

Düşündüğünüz view'ler hazır halde beklemezler. Dediğiniz gibi hazır halde bekleyen ve bağımlı tablolarda değişiklik olduğunda otomatik güncellenen tablolara Sql Server'da Indexed View, Oracle'da Materialized View denir. Bu tür View'lerde index (full text index dahil) oluşturmak da mümkündür. Kanaatimce yukarıdaki çözümlerin en hızlısı bu çözümdür. Fakat Indexed View oluşturmak için bazı koşullar gerekir.

Indexed View Oluşturmanın Ön Şartları:
Bir View üzerine Clustered Index tanımlamadan önce bazı ön şartların sağlanmış olması gerekmektedir. Bu ön şartlardan bazıları aşağıdaki gibidir:
  • İlgili View’in içinde başka bir View kullanılamaz.
  • View’in içinde kullanılan tüm tablolar View ile aynı veritabanında ve aynı schema sahibine ait olmak zorundadır.
  • View SchemaBinding opsiyonu ile oluşturulmak zorundadır.
  • View içinde kullanılan UDF (User Defined Functions) ‘larda SchemaBinding opsiyonu ile oluşturulmuş olmalıdır.
  • View içinde kullanılan tablo ve UDF’ler SchemaName+ObjectName şeklinde kullanılmalıdır. Örneğin Person.Address gibi.
  • View’de hesaplama fonksiyonu kullanıldı ise select kısmında COUNT_BIG(*) kullanılması zorunludur.
  • Ayrıca select kısmı için aşağıdaki engeller mevcuttur.
    • Select * şeklinde bir kullanıma izin verilmez. Kolon adları belirtilmek zorundadır.
    • Aynı kolon adı 1 den fazla kullanılamaz.(“Select col1 as a, col1 as b from tbl1” gibi)
    • CTE (Common Table Expression) kullanımına izin verilmez.
    • TOP ve Order By kullanılamaz.
    • Count kullanılamaz. Count yerine Count_Big kullanılmalıdır.
Kaynak:
http://www.sqlserveronculeri.com/1/Artic...tirin.aspx

Bu kadar detaya Girmek istememiştim ama Smile Durum buraya kadar geldi Smile
Ellerinize sağlık.
Cevapla
#13
(23-12-2017, Saat: 18:01)FiRewaLL Adlı Kullanıcıdan Alıntı: Bu kadar detaya Girmek istememiştim ama Smile Durum buraya kadar geldi Smile
Ellerinize sağlık.


Burası Delphican, Üyelerinin kalitesi  Wink
WWW
Cevapla
#14
(23-12-2017, Saat: 18:33)yhackup Adlı Kullanıcıdan Alıntı:
(23-12-2017, Saat: 18:01)FiRewaLL Adlı Kullanıcıdan Alıntı: Bu kadar detaya Girmek istememiştim ama Smile Durum buraya kadar geldi Smile
Ellerinize sağlık.


Burası Delphican, Üyelerinin kalitesi  Wink

Wink Kesinlikle
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Trew View yapısında olan veriden Root kaydına nasıl ulaşılır adelphiforumz 9 902 25-12-2023, Saat: 08:06
Son Yorum: adelphiforumz
  Stored Procedure barissagir 1 698 07-12-2022, Saat: 16:59
Son Yorum: yhackup
  Stored Procedure Önceki gün devir. smokie 7 4.800 27-09-2020, Saat: 22:00
Son Yorum: anemos
  stored procedure harezmi 9 6.142 18-08-2019, Saat: 20:58
Son Yorum: serdar
  Maximum stored procedure, nesting level exceeded (limit 32) hatası Bay_Y 6 4.729 08-08-2018, Saat: 14:15
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi