23-12-2017, Saat: 17:11
(Son Düzenleme: 23-12-2017, Saat: 22:50, Düzenleyen: csunguray.
Sebep: İmlâ
)
(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.
- Select * şeklinde bir kullanıma izin verilmez. Kolon adları belirtilmek zorundadır.
http://www.sqlserveronculeri.com/1/Artic...tirin.aspx