İndexed(Materialized) Views nedir?

İndexed Views nedir? Ne işe yarar? Nasıl Kullanılır? Merhabalar bu yazımda  Views ‘lere index kullanımı amaçları ve dezavantaçlarını anlatacağım. Öncelikle View’ler kullanım amacını bilmemiz gerekir. View ‘ler SQL tabloların birleşimi ile oluşturulan istenilen bilgiler(Kolonlar) göre oluşturulan raporlama işlemi diyebiliriz. Örnek olarak create view [dbo].[Ozet_Yillik_Satislar] as SELECT Satislar.SevkTarihi, Satislar.SatisID, Satis_Alt_Toplamlari.Subtotal FROM Satislar INNER JOIN Satis_Alt_Toplamlari ON Satislar.SatisID = Satis Alt Toplamlari.SatisID WHERE Satislar.SevkTarihi IS NOT NULL GO   Normalde bir view, sorgularda kullanılan verilerin sanal bir birleşimidir. Ancak indexed view oluşturulduğunda, SQL Server bu görünüme bir clustered index –non-clustered index ekler. Bu indeks, görünümün verilerini fiziksel olarak depolar ve sorgular doğrudan bu indeksi kullanarak daha hızlı bir şekilde sonuç döndürebilir. NOT: Tabiki Disk maliyetini düşünmemiz gerekir performans açısından daha iyi olması View’in artık index üzerinden işlem yapmasıdır. Indexed View Kullanım Durumları Karmaşık ve Sık Kullanılan Sorgular Veri Analizi ve Raporlama Özet Tablo Oluşturma Indexed View Kullanımında Dikkat Edilmesi Gerekenler Güncellemeler ve […]

İndexed(Materialized) Views nedir?

İndexed Views nedir? Ne işe yarar? Nasıl Kullanılır?

Merhabalar bu yazımda  Views ‘lere index kullanımı amaçları ve dezavantaçlarını anlatacağım.

Öncelikle View’ler kullanım amacını bilmemiz gerekir.

View ‘ler SQL tabloların birleşimi ile oluşturulan istenilen bilgiler(Kolonlar) göre oluşturulan raporlama işlemi diyebiliriz.

Örnek olarak

create view [dbo].[Ozet_Yillik_Satislar] as

SELECT Satislar.SevkTarihi, Satislar.SatisID, Satis_Alt_Toplamlari.Subtotal

FROM Satislar INNER JOIN Satis_Alt_Toplamlari ON Satislar.SatisID = Satis Alt Toplamlari.SatisID

WHERE Satislar.SevkTarihi IS NOT NULL

GO

 

Normalde bir view, sorgularda kullanılan verilerin sanal bir birleşimidir.

Ancak indexed view oluşturulduğunda, SQL Server bu görünüme bir clustered indexnon-clustered index ekler. Bu indeks, görünümün verilerini fiziksel olarak depolar ve sorgular doğrudan bu indeksi kullanarak daha hızlı bir şekilde sonuç döndürebilir.

NOT: Tabiki Disk maliyetini düşünmemiz gerekir performans açısından daha iyi olması View’in artık index üzerinden işlem yapmasıdır.

Indexed View Kullanım Durumları
  • Karmaşık ve Sık Kullanılan Sorgular
  • Veri Analizi ve Raporlama
  • Özet Tablo Oluşturma
Indexed View Kullanımında Dikkat Edilmesi Gerekenler
  • Güncellemeler ve Performans:

Tablo verilerinde her değişiklik yapıldığında otomatik olarak güncellenir. Bu, insert, update ve delete işlemleri üzerinde ekstra yük oluşturabilir

  • Indexed View’larda Kullanılamayan Veri Türleri vardır.
  1. text
  2. ntext
  3. Image
  4. nvarchar(max)
  5. varchar(max) Boyutu belli olmayan veri türleri diyebiliriz
  • Görünüm Tasarımı:

Schema Bound uygulanması View içerisinde kullanılan tablolarımızda herhangi bir yapısal değişikliklere izin vermemesidir.( WITH SCHEMABINDING ifadesi kullanılarak oluşturulan bir görünüm veya fonksiyon schema-bound)

  • Indexed View’larda Kullanılamayan Veri Türü Dönüşümleri vardır bunlar.
  1. Substring
  2. Cast
  3. Convert
  4. Datetime
  5. Sum
  6. Avg
  7. Min,Max vb.

Örnek olarak

Select Column1 +Column2 From table  —Kullanılır.

Select LOG(Column1) From table —Kullanılmaz

Indexed View Oluşturma aşamaları ve dikkat edilmesi gereken durumlar

Dikkat etmemiz gereken konu SCHEMA kullanılması gerekiyor. Örnek olarak dbo.table bu şekilde index View oluşturabilirsiniz.

İndex Views dikkatli bir şekilde kullanılmalı ve gereksiz yere veri güncellemesi yapılan durumlarda tercih edilmemelidir.

Yapacağınız analiz doğrultusunda kullanılmasını öneririm.

 

Benzer Yazılar

SQL Server Log Shipping Mimarisi

SQL Server 3 gün önce

SQL Server Log Shipping Mimarisi nedir? Log Shipping Nedir? Log Shipping Kurulumu nasıl yapılır?İçindekilerLog Shipping Nedir?Log Shipping Nasıl Çalışır?Log Shipping Kurulumu Merhabalar Bu yazımda MS SQL Server mimarisi olan LOG SHIPPING mimarisinden ve kurulumundan bahsettim. Log Shipping Nedir? Log Shipping, Primary veritabanında meydana gelen değişikliklerin (inserts, updates, deletes) Secondary  veritabanına aktarılmasını sağlar. Bu işlem, düzenli olarak alınan transaction log yedeklerinin bir veya birden fazla Secondary sunucuya uygulanmasıyla gerçekleşir. Log Shipping, genellikle şunlar için kullanılır: Felaket Kurtarma (Disaster Recovery): Primary Sunucu Arızalandığında Secondary sunucudan devam etmeyi sağlar. Burada tabiki herkesin aklındaki soru Veri Kaybı  evet burada bir veri kaybı olacaktır. Bunun sebebi alınan son transaction log backup sonrasında yapılan işlemler Secondary sunucuda bulunmayacaktır. Kısaca özetlemek gerekir ise Her 10 Dakikada bir Transaction Log backup alınan ortamda En son alınan Transaction Log backup saat 12:50 de alındığını düşünelim ve Primary sunucumuz arızalandığı saat ise 12:55 burada 5 dakika içerisinde gerçekleşen işlemlerin hiç […]

User-Defined Functions(Kullanıcı Tanımlı Fonksiyonlar)

SQL Server 4 gün önce

User-Defined Functions(Kullanıcı Tanımlı Fonksiyonlar) SQL Server 2000 ile gelen bir özelliktir.İçindekilerTable-Valued Functions (Tablo Değerli Fonksiyonlar)Scalar Functions (Skalar Fonksiyonlar)Inline Table-Valued Functions (Satır İçi Tablo Değerli Fonksiyonlar) Bu yazımda ihtiyaçlar doğrultusunda kendinize ait raporlamaları aralıklı günlere göre yada istediğiniz değerlere göre ihtiyaçlarınızı karşılayabilirsiniz. Başlıktanda anlaşıldığı gibi kullanıcıların ihtiyaçlarına göre kendilerine ait fonksiyonlarını oluşturabileceklerdir. 3 çeşit fonksiyon vardır. Table-Valued Functions (Tablo Değerli Fonksiyonlar) Viewlerle büyük benzerlikler içerir ancak farklı olarak dışarıdan parametre alabilirler. belirli bir tarih aralığındaki verileri dondurmek istediğimizde ve büyük verileri sorgulamak istediğimizde kullanılır. Örnek olarak 2 tarih arasındaki verileri döndürmek CREATE FUNCTION dbo.fn_SalesBaslaBitisTarih (@startDate DATE, @endDate DATE) RETURNS TABLE AS RETURN ( SELECT * —-Yada istenilen kolonlar FROM Sales WHERE OrderDate BETWEEN @startDate AND @endDate — ekstra koşul eklenebilir ) SELECT * FROM dbo.fn_ SalesBaslaBitisTarih (‘2025-01-01’, ‘2025-03-01’) Bu sorgu, 2025-01-01 ile 2025-03-01 arasındaki tüm verileri listeleyecektir. Scalar Functions (Skalar Fonksiyonlar) Skalar fonksiyonlar birden fazla satır üzerinde işlem yapmaz; her zaman […]

SQL Server 2016 ‘dan 2022 Sürüm bilgileri

SQL Server 1 hafta önce

SQL Server 2016 ‘dan 2022 sürümüne kadar eklenen önemli işlevler ve gelişmeler hakkında bilgi sahibi olmak  Bu yazımızda SQL Server 2016 ,SQL Server 2017, SQL Server 2019, SQL Server 2022 sürümlerinin yeniliklerini nelerdir ? Bu sürümler ile göze çarpan ve ortamlara göre kullanılması gereken etkenler ne olmalıdır sorularına cevap vermeye çalışacağım

0 Yorum

Yorum Yaz

Rastgele