Aracılığıyla paylaş


Bölümlendirilmiş görünüm kullanma

Bölümlendirilmiş görünümlerde, verileri daha küçük bir üye tablolarına Bölünecek büyük bir tablo izin ver.Verileri, veri değerleri bir sütun aralıklarının temel üye tablolar arasında bölümlendirilir.bölümleme sütun için belirtilen bir CHECK kısıtlaması her üye tablo için veri aralıkları tanımlanır.UNION ALL birleştirmek için kullandığı BIR görünüm, tek bir sonucu tüm üye tabloları seçer küme sonra tanımlanır.Bölüm sütun SELECT deyimlerine görünüme başvuran bir arama koşulu belirlediğinizde, sorgu iyileştiricisi CHECK kısıtlaması tanımları hangi üye tablo satırları içerdiğini belirlemek için kullanır.

Not

Bir sunucuya yerel bölümleme veri tercih edilen bölümlendirilmiş bir tablo ile yöntemidir.Daha fazla bilgi için bkz:Bölümlenmiş tablolar ve dizinler.

Örneğin, satış tablosu, satış kaydeder 1998 her ay için birer tane 12 üye tablolara bölümlenmiş. Her üye tablo tanımlanan bir kısıtlamaya sahip 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 tüm satırları olduğundan emin olun 5 içinde OrderMonth sütun ve sipariş tarih, Mayıs 1998 ' tarih belirtir. Bu tablo üzerinde tanımlı kısıtlamaları tarafından zorlanır.

Bir görünüm kullanan sonra tanımlanır UNION ALL verileri, bir tek bir sonuç kümesi olarak 12 üye tablolarının tümünün 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ı hakkında bilgi almak için belirli bir ay.

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

The SQL Server sorgu iyileştiricisi recognizes that the arama koşulu in this SELECT deyim references only rows in the May1998Sales and Jun1998Sales tables. Bu nedenle, bu tabloları için arama sınırlar.

Bölümlenmiş görünümün üzerinde güncelleştirme gerçekleştirmek için , bölümleme sütun bir temel tablo birincil anahtarının parçası olmalıdır.Bir görünümü güncelleştirilebilir durumda değilse, bir INSTEAD OF tetikleyicisi, güncelleştirmelere olanak veren görünümünü oluşturabilirsiniz.Hiçbir yinelenen bir satır eklenir emin olmak için tetikleyici içinde hata tasarlamanız.Bir görünümü için tasarlanmış bir INSTEAD OF tetikleyicisi örneği için bkz: Tetikleyicileri ıNSTEAD OF tasarlama.

CHECK kısıtlamaları doğru sonuçlar bölümlendirilmiş görünüm için gereklidir.Ancak, CHECK kısıtlamaları tanımlı, sorgu iyileştiricisi yalnızca bölümleme sütun bir arama koşulu kapsayan yerine tüm tabloları aramalıdır.CHECK kısıtlamaları, görünüm, başka bir görünüme sahip UNION ALL gibi çalışır.sorgu iyileştiricisi, farklı tablolarda depolanan değerleri ilgili yapamazsınız ve görünüm tanımında katılan tabloların arama atlayamazsınız.

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

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

  • Geçerli sonuçlar için bölümlendirilmiş görünüm tanımı, en eski dönemdeki en yeni dönemin eklemek, sürüklenip değiştirilebilir.

  • Önceki sonuçlar için bölümlendirilmiş görünüm tanımı, yalnızca geçerli sonuçları görünümden bırakılan dönemin eklemek için değiştirilebilir.Kaldırıp eski dönem Kapaklar'arşivlemek için geçmiş sonuçlar görünüm de güncelleştirilebilir.

Bölümlendirilmiş görünümlerde, verileri eklerken Sp_executesql sistem saklı yordamı INSERT deyimleri ile çok sayıda eşzamanlı kullanıcı sistemlerinde yeniden önemli bir olasılığı olan yürütme planları oluşturmak için kullanılır.

Not

Bölümlendirilmiş bir görünüme toplu alma her ikisi için de desteklenmez Kullanımıbcp komut ve BULK INSERT ve INSERT... SELECT * FROM OPENROWSET(BULK...) deyimleri.Ancak, birden çok satır bölümlendirilmiş bir görünüme kullanarak ekleyebileceğiniz bir EKLEME deyim.