Aracılığıyla paylaş


Bölümlenmiş görünümleri kullanma

Bölümlenmiş görünümler veri büyük bir izin tablo daha küçük üye Bölünecek tablos.Veri aralıkları sütunlarından birindeki veri değerlerinin temel üye tablolar arasında bölümlendirilir.Belirtilen denetim kısıtlamasını her üye tablo için veri aralıkları tanımlanır bölümleme sütunu.UNION all birleştirmek için kullandığı bir görünüm tüm üye tabloların içine tek bir sonuç küme tanımlı sonra seçer.Ne zaman görünüme başvuran select deyimleri belirtme bir arama koşulu bölüme sütun, sorgu iyileştiricisi hangi üye tablo satırları içerdiğini belirlemek için onay kısıtlaması tanımları kullanır.

Not

Tercih edilen yöntem veri bölümleme için bir sunucuya yerel bölümlenmiş tabloları olur.Daha fazla bilgi için bkz: Bölümlenmiş tablolar ve dizinler.

Örneğin, satış için kaydeden bir satış tablo 1998 bölümlenmiş tablolara 12 üye, biri her ay.Her üye tablo üzerinde tanımlı bir kısıtlama vardır OrderMonth sütun:

CREATE TABLE May1998sales
   (OrderID      INT,
   CustomerID      INT      NOT NULL,
   OrderDate      DATETIME      NULL
      CHECK (DATEPART(yy, OrderDate) = 1998),
   OrderMonth      INT
      CHECK (OrderMonth = 5),
   DeliveryDate      DATETIME      NULL
      CHECK(DATEPART(mm, DeliveryDate) = 5)
   CONSTRAINT OrderIDMonth PRIMARY KEY(OrderID, OrderMonth)
   )

Dolduran uygulama May1998sales gereken tüm satırlar bulunduğundan emin olun 5 , OrderMonth sütun ve sipariş tarihi Mayıs 1998'de bir tarih belirler.Tablo üzerinde tanımlı kısıtlamaları tarafından zorlanır.

Bir görünüm sonra kullanan tanımlı UNION ALL tek bir sonuç küme tüm 12 üye tablolardan verileri seçmek için:

CREATE VIEW Year1998Sales
AS
SELECT * FROM Jan1998Sales
UNION ALL
SELECT * FROM Feb1998Sales
UNION ALL
SELECT * FROM Mar1998Sales
UNION ALL
SELECT * FROM Apr1998Sales
UNION ALL
SELECT * FROM May1998Sales
UNION ALL
SELECT * FROM Jun1998Sales
UNION ALL
SELECT * FROM Jul1998Sales
UNION ALL
SELECT * FROM Aug1998Sales
UNION ALL
SELECT * FROM Sep1998Sales
UNION ALL
SELECT * FROM Oct1998Sales
UNION ALL
SELECT * FROM Nov1998Sales
UNION ALL
SELECT * FROM Dec1998Sales

Örneğin, aşağıdaki SELECT deyim sorguları belirli ay hakkında bilgi için

SELECT *
FROM Year1998Sales
WHERE OrderMonth IN (5,6) AND CustomerID = 64892

The SQL Server query optimizer recognizes that the search condition in this SELECT statement references only rows in the May1998Sales and Jun1998Sales tables.Bu nedenle, bu tabloları için kendi arama sınırlar.

Bölümlenmiş görünümün üzerinde güncelleştirmeler gerçekleştirmek için bölümleme sütunu bir parçası olmalıdır birincil anahtar temel tablo.Bir görünümü güncelleştirilebilir ise, bir INSTEAD of tetikleyicisi güncelleştirmelere olanak veren görünüm oluşturabilirsiniz.Hata işleme hiçbir yinelenen satırları eklenir emin olmak için tetikleyici tasarlamak.Bir görünümü üzerinde tasarlanmış bir INSTEAD of tetikleyicisi örneği için bkz: INSTEAD OF tetikleyicileri tasarlama.

Bölümlenmiş görünümün doğru sonuçlar döndürmek denetim kısıtlamalarını gereklidir.Bununla birlikte, Denetim kısıtlamalarını tanımlı, sorgu iyileştiricisi yerine, yalnızca bölümleme sütununda arama koşulu kapsayan tüm tabloları aramak gerekir.Kontrol kısıtlamaları görünümü gibi herhangi bir görünümde UNION all ile çalışır.sorgu iyileştiricisi Değerleri hakkında herhangi bir varsayım depolanan farklı tablolar ve bunu yapma görünüm tanımında katılan tabloları arama atlayamazsınız olamaz.

Bölümlenmiş bir görünüm tarafından başvurulan tüm üye tabloları aynı sunucuda, görünümü olan bir yerel bölümlenmiş görünüm.Üye tablolar birden fazla sunucuda, görünümü olan bir dağıtılmış bölümlü görünüm.Dağıtılmış bölümlenmiş görünümler bir grup sunucu, bir sistem veritabanı işlem yükü yaymak için kullanılır.Daha fazla bilgi için bkz: Federe veritabanı sunucuları.

Bölümlenmiş görünümler üye tabloları bağımsız olarak korumak kolaylaştırır.Örneğin, bir dönem sonunda aşağıdakileri yapabilirsiniz:

  • Güncel sonuçlar için bölümlenmiş görünümün tanımını en yeni dönem eklemek ve eski dönem bırak için değiştirilebilir.

  • Geçmiş sonuçlar için bölümlenmiş görünümün tanımı yalnızca geçerli sonuçlar görünümden bırakılan nokta eklemek için değiştirilebilir.Geçmiş sonuçlar görünümü kaldırmak ve en eski dönem Kapaklar arşivlemek için de güncelleştirilebilir.

Bölümlenmiş görünümlere veri eklediğinizde, sp_executesql sistem saklı yordamı INSERT deyimleri ile çok sayıda eşzamanlı kullanıcı sistemlerinde kaynaklanacak önemli şansım yürütme planları oluşturmak için kullanılabilir.

Not

Toplu alma bölümlenmiş bir görünüm içinde desteklenmeyen her ikisi için de bcp bulk INSERT ve komutu Ekle...SEÇİN * ndan openrowset(bulk...) ifadeleri.Ancak, birden çok satır bölümlenmiş bir görünüm kullanarak ekleyebileceğiniz bir Ekle deyim.