SQL view’ları: sanal tablo olarak saklı sorgular
Kısaca: Bir view, bir tablo gibi kullanılabilen, adlandırılmış ve saklı bir sorgudur; karmaşık sorguları basitleştirir ve sütunlara erişimi kısıtlayabilir.
Biraz daha ayrıntılı: Birkaç join içeren uzun bir sorguyu tekrar tekrar yazmak yerine onu bir kez view olarak saklarsın (CREATE VIEW). Sonra SELECT * FROM view_name ile sorgularsın. Bir view normalde kendi verilerini tutmaz, her çağrıda sorguyu çalıştırır.
Ayrıntılı
Faydalar
- Basitleştirme: karmaşık join’ler ve hesaplamalar tek bir yerde.
- Erişim denetimi: kullanıcılar yalnızca seçili sütunları/satırları görür (örneğin maaş sütunu olmadan); izinler view üzerinde verilir.
- Kararlı arayüz: tablo yapısı değişebilir, view ise uygulamalar için sonucu aynı tutar.
- Raporların okunabilirliği.
Gerçekleştirilmiş (materialized) view’lar
Bir materialized view (CREATE MATERIALIZED VIEW) sonucu fiziksel olarak saklar. Sorgular hızlanır, ancak veriler yalnızca son REFRESH MATERIALIZED VIEW kadar günceldir. Saniyesine kadar doğru olması gerekmeyen pahalı analizler (istatistikler, panolar) için uygundur. PostgreSQL’de okuyucuları kilitlemeden CONCURRENTLY ile yenileyebilirsin (benzersiz bir dizin gerektirir).
Sınırlar
- Sıradan view’lar altta yatan sorgudan daha hızlı değildir; planlayıcı onları sorguya genişletir.
- View’lar üzerinden yazma yalnızca basit view’lar (tek tablo, toplama yok) veya
INSTEAD OFtetikleyicileriyle çalışır. - İç içe view’lar çabucak karmaşıklaşır ve yavaşlar.
- Temel tablolardaki değişiklikler view’ları geçersiz kılabilir; bağımlılıkları belgele.
Sınav bakışı
View = üç şema mimarisinin dış şemasında bir sanal tablo. Faydalar: veri bağımsızlığı ve veri koruma. Karşılığı: önbelleğe alınmış sonuç olarak materialized view.
Ayrıca bak: Join’ler, Sorgu planlayıcı ve EXPLAIN, Alt sorgular ve CTE’ler