Aracılığıyla paylaş


Dizine eklenen görünümler oluşturma

Bir görünümü, kümelenmiş dizin üzerinde oluşturmadan önce aşağıdaki gereksinimleri karşılaması gerekir:

  • CREATE VIEW deyim çalıştırıldığında seçenekleri ANSI_NULLS ve QUOTED_IDENTIFIER ON olarak küme olması gerekir.Bu görünümleri raporlarını OBJECTPROPERTY işlev ExecIsAnsiNullsOn or ExecIsQuotedIdentOn özellikleri.

  • ANSI_NULLS seçeneği ON görünüm tarafından başvurulan tablolar oluşturma CREATE tablo deyimleri tüm yürütülmesi için küme olması gerekir.

  • Görünüm gerekir değil başka bir görünüm aldığından, yalnızca tablo temel.

  • Görünüm tarafından başvurulan tüm temel tablo, görünüm aynı veritabanında bulunması ve aynı sahibi olarak görünümü olması gerekir.

  • Görünüm SCHEMABINDING seçeneği ile yeniden oluşturulmalıdır.Şema cilt payı, görünümü temel tablolar temel şemaya bağlar.

  • Kullanıcı tanımlı işlevler görünümde başvurulan SCHEMABINDING seçeneğiyle oluşturulmuş olması gerekir.

  • Tablolar ve kullanıcı tanımlı işlevler görünümünde iki parça adlar olarak başvuru gerekir.Bir bölümü, üç bölümlü ve four-part adlarına izin verilmez.

  • Deterministic görünümündeki ifadeler tarafından başvurulan tüm işlevleri olmalıdır.The IsDeterministic özellik of the OBJECTPROPERTY işlev reports whether a user-defined işlev is deterministic.Daha fazla bilgi için bkz:Deterministic ve Nondeterministic işlevler.

    Not

    Için bakın datetime ve smalldatetime Dize hazır bilgi, dizin oluşturulmuş görünümler SQL Server 2008, size açıkça literal belirli bir tarih biçimi stili kullanarak istediğiniz tarih türü için dönüştürmeniz önerilir. Deterministic olan tarih biçimi stili listesi için bkz: CAST ve CONVERT (Transact-SQL). Örtülü dönüştürme, karakter dizeleri içeren ifadeleri datetime veya smalldatetime uyumluluk düzey olmadığı sürece, nondeterministic düşünülür küme 80 veya daha önceki. Bu durum sunucu oturum LANGUAGE ve DATEFORMAT ayarları üzerinde sonuçlar bağlıdır çünkü.Örneğin, deyimin sonuçlarını CONVERT (datetime, '30 listopad 1996', 113) çünkü, DIL ayarına bağlıdır dize 'listopad' farklı ayların farklı dillerde anlamına gelir. Benzer şekilde, ifade DATEADD(mm,3,'2000-12-01'), SQL Server dize yorumlar. '2000-12-01' DATEFORMAT ayarına dayanır.

    Uyumluluk düzey 80 veya daha önce ayarlamadıysanız Unicode karakter verilerinin harmanlamaları arasında örtülü dönüşüm de nondeterministic, kabul edilir.

    Bu deyimler içeren görünümlerde dizinleri oluşturma, 90 uyumluluk modunda izin verilmez.Ancak, yükseltilen veritabanındaki bu deyimler içeren varolan bir görünüm maintainable altındadır.Tarih dönüştürmeleri için örtülü bir dize içeren bir dizin oluşturulmuş görünümler'i kullanırsanız, LANGUAGE ve DATEFORMAT ayarlarının veritabanları ve uygulamaları olası dizinli görünüm bozulmasını önlemek için tutarlı olduğundan emin olun.

  • Görünüm tanımını kullanan bir toplamak işlev, SEÇIM listesi COUNT_BIG (*) içermesi gerekir.

  • Kullanıcı tanımlı özellik verilere işlev NO SQL olmalıdır ve dış erişim özellik olmalıdır No

  • Ortak dil çalışma zamanı (CLR) işlevleri görünümü seçme listesinde görünebilir, ancak kümelendirilmiş bir dizin anahtarının tanımı olamaz.CLR işlevleri, görünümün WHERE yan tümcesinde veya bir görünüm birleştirmek işleminde ON yan tümce bulunamaz.

  • CLR işlevleri ve görünüm tanımında kullanılan CLR türü kullanıcı tanımlı yöntem aşağıdaki gösterildiği gibi özellikleri olmalıdır tablo.

    Özellik

    Not   

    deterministic = true

    Must be declared explicitly as an attribute of the Microsoft .NET Framework method

    KESİN = true

    Bir öznitelik olarak açıkça bildirilmelidir .NET Framework yöntem.

    VERİ ERİŞİM YOK sql =

    Ayarı belirlenir. DataAccess özniteliğiDataAccessKind.None and SystemDataAccess özniteliğiSystemDataAccessKind.None.

    DIŞ ERİŞİM HAYIR =

    Varsayılan olarak bu özellik HAYıR'CLR yordamlar için kullanır.

    CLR olağan yöntemleri özniteliklerini küme hakkında daha fazla bilgi için bkz: CLR yordamları için özel öznitelikleri.

    Uyarı

    Çelişki yönteminin içinde işlevine CLR olağan yöntemleri özelliklerini ayarlama önermiyoruz.Bunu yaptığınızda, veri bozulmasına yol açabilir.

  • SELECT deyiminde görünümü aşağıdaki bulunamaz. Transact-SQL Sözdizimi öğeler:

    • * Veya table_name**.** * sütunları belirtmek için sözdizimi.Sütun adlarını açıkça belirtilmelidir.

    • Birden fazla görünüm sütununda, basit bir ifade olarak kullanılan tablo sütun adı belirtilemez.Bir sütun birden çok kez sağlanan tüm ya da tüm başvurulabilir ancak bir sütun başvurusu, karmaşık bir ifade veya işleve bir parametre bir parçasıdır.Örneğin, aşağıdaki seçim listesi geçerli değil:

      SELECT ColumnA, ColumnB, ColumnA
      

      Bu seçim listesi geçerli değil:

      SELECT SUM(ColumnA) AS SumColA, ColumnA % ColumnB AS ModuloColAColB, COUNT_BIG(*) AS cBig FROM dbo.T1 GROUP BY ModuloColAColB
      
    • sütun bir GROUP BY yan tümcesinde kullanılan bir ifadeyi veya toplamak sonuçlar üzerinde bir ifade.

    • Türetilmiş BIR tablodur.

    • Bir ortak tablo ifade (CTE).

    • Satır kümesi işlevler.

    • UNION DıŞıNDA veya INTERSECT işleçler.

    • Alt sorgular.

    • Dış veya kendi kendine birleşim.

    • TOP yan tümce.

    • ORDER BY yan tümce.

    • DISTINCT anahtar sözcüğü.

    • COUNT (COUNT_BIG(*) izin verilir.)

    • AVG, MAX, MIN, STDSAPMA, STDSAPMAS, VAR ve VARP toplamak işlevleri.AVG ()expression) belirtilen görünüm seçim listesi SUM () içeriyorsa dizinlenmiş görünümün başvuran sorgularda iyileştirici sık gerekli sonucu hesaplayabilirsinizexpression) ve COUNT_BIG ()expression). Örneğin, bir dizinli görünüm SELECT listesi AVG(column1) ifade bulunamaz.SEÇIM listesi görünümü SUM(column1) ve COUNT_BIG(column1), ifadeler içeriyorsa SQL Server Sorguda, görünüme başvuran AVG(column1) belirtir ortalamasını hesaplayabilirsiniz.

    • Null bir ifade başvuran BIR TOPLAM işlev.

    • Sıralama veya toplamak penceresinde işlevler içerir ÜZERINDE yan tümce.

    • CLR kullanıcı tanımlı BIR toplu işlev.

    • Tam metin yüklemler FREETEXT ya da IÇERIR.

    • COMPUTE veya COMPUTE BY yan tümce.

    • Çapraz APPLY ya da OUTER APPLY işleci.

    • PIVOT veya UNPIVOT işleçleri

    • Ipuçlarını tablo (yalnızca, 90 veya daha fazla uyumluluk düzey uygulanır).

    • Ipuçlarını katılın.

    • Xquery ifadeleri doğrudan başvuru.Dolaylı başvuru, şemaya bağlı kullanıcı tanımlı işlev içine Xquery ifade gibi kabul edilir.

  • GROUP BY belirtilirse, görünümü seçim listesi COUNT_BIG(*) bir ifade içermeli ve görünüm tanımında HAVING, ROLLUP, küp veya gruplandırma AYARLAR belirleyemezsiniz.

CREATE INDEX deyim için gereksinimler

Bir görünümü üzerinde oluşturulan ilk dizin, benzersiz, kümelenmiş dizin olmalıdır.Benzersiz bir kümelenmiş dizin oluşturulduktan sonra ek kümelenmemiş dizin oluşturabilirsiniz.Görünümlerde dizinleri için bir adlandırma kurallarına tablolarda dizinler aynıdır.Tek fark, tablo adı, bir görünüm adı ile değiştirilir olur.Daha fazla bilgi için bkz:INDIS (Transact-SQL) CREATE.

CREATE INDEX deyim normal CREATE INDEX gereksinimleri yanı sıra, aşağıdaki gereksinimleri karşılaması gerekir:

  • CREATE INDEX yürüten kullanıcının deyim görünüme sahip olması gerekir.

  • CREATE INDEX deyim yürütüldüğünde aşağıdaki küme seçenekleri ON olarak küme olması gerekir:

    • ansi_nulls

    • ansi_padding

    • ansi_warnings

    • concat_null_yields_null

    • QUOTED_IDENTIFIER

  • NUMERIC_ROUNDABORT seçenek olmalıdır küme için KAPALı.Varsayılan ayar budur.

  • Uyumluluk modunda 80 veya daha önceki bir veritabanı çalıştırıyorsa, ARITHABORT seçeneği ON olarak küme olması gerekir.

  • Kümelenmiş veya kümelenmemiş bir dizin oluşturduğunuzda, IGNORE_DUP_KEY seçenek olmalıdır küme (varsayılan küme ting) OFF için.

  • Görünüm içeremez text, ntext, veya image sütunları, CREATE INDEX deyim içinde başvurulan bile.

  • SELECT deyim görünümde bir GROUP BY yan tümce tanımı belirtir, benzersiz bir kümelenmiş dizin anahtar, yalnızca GROUP BY yan tümcende belirlenen sütun başvurabilirsiniz.

  • Dizin bir anahtar sütun, imprecise ifade depolanmış bir sütunda başvurmalıdır bir temel tablo görünümü temel.Bu sütun, normal, saklı bir sütun ya da kalıcı olarak hesaplanan bir sütun olabilir.Diğer imprecise ifadeleri anahtar sütun dizinlenmiş görünümün parçası olabilir.

Dikkate Alınacak Noktalar

Bu ayarı, large_value_types_out_of_row seçeneği sütunların dizinli görünüm ayarı karşılık gelen sütun devralınan temel tablo.Bu değer kullanılarak küme sp_tableoption.Deyim oluşturulmuş bir sütun için varsayılan ayarı 0'dır.Bu durum, büyük bir değer türleri satır içinde depolanan olduðu anlamýna gelir.Daha fazla bilgi için bkz:Büyük değer veri türleri'ni kullanma.

After the clustered index is created, any connection that tries to modify the base data for the view must also have the same option settings required to create the index.SQL Server generates an error and rolls back any INSERT, UPDATE, or DELETE statement that will affect the result set of the view if the connection executing the statement does not have the correct option settings.Daha fazla bilgi için bkz:sonuçlar etkiler, küme seçenekleri.

Görünüm kesildiğinde, bir görünümde tüm indeksler bırakılır.Kümelenmiş dizin kesildiğinde, tüm kümelenmemiş dizin ve görünümü otomatik olarak oluşturulan istatistikleri bıraktı.Kullanıcı tarafından oluşturulan istatistikleri görünümünde sürdürülür.Kümelenmemiş dizin tek tek kesilmesine.Kümelenmiş dizin görünümü üzerinde bırakarak, saklanan sonuç kaldırır küme, görünümü gibi standart bir görünüm işleme için iyileştirici verir.

Kümelenmiş dizin anahtar oluşturan sütunların tam sonucu BENZERSIZ KÜMELENMIŞ DIZIN CREATE deyiminde belirtilen karşın küme görünümünü veritabanında depolanır.Kümelenmiş bir dizin üzerinde temel bir tablo gibi B-ağacı yapısını kümelenmiş dizin anahtar sütunlarının içerir, ancak görünümün sonuç kümesindeki tüm sütunlara veri satırlarını içerir.

Varolan bir sisteme görünümlere dizinler eklemek isterseniz, şema gerekir dizin yerleştirmek istediğiniz herhangi bir görünümde bağlayın.Aşağıdaki işlemleri gerçekleştirebilirsiniz:

  • Görünüm bırakın ve, WITH SCHEMABINDING belirterek yeniden oluşturun.

  • Varolan bir görünümü, ancak farklı bir ad olarak aynı metni içeren ikinci bir görünüm oluşturabilirsiniz.Sorgular FROM yan tümcesinde doğrudan başvurulmuyor bile iyileştirici yeni görünüm, dizinlerde dikkate alır.

    Not

    Şema ile oluşturulmuş bir görünüm katılma tablolar veya görünümler bağlama görünümü bırakılan veya şema, artık sahip olacak şekilde değiştirdi yan tümce, kesilmesine edemiyor bağlama.Bu ifade, Görünüm tanımını etkilerse, ayrıca, ALTER tablo deyimleri tablolarda şema cilt payı olan bir görünümde yer başarısız olur.

Yeni Görünüm, dizinli görünüm tüm gereksinimlerini karşıladığından emin olmanız gerekir.Bu görünüm, tüm aynı kullanıcının sahibi için sıraya başvuran tüm temel tabloları ve sahipliğini değiştirmek gerekebilir.

Tablolar ve görünümler dizinleri devre dışı bırakılabilir.Bir tabloda kümelenmiş dizin devre dışı bırakıldığında, tabloyla ilişkili görünümlerde dizinleri de devre dışı bırakılır.Daha fazla bilgi için bkz:Dizinleri devre dışı bırakma.

Örnek

Aşağıdaki örnekte, bu görünümü bir görünüm ve bir dizin oluşturur.Iki sorgu içerdiği, dizinlenmiş görünümün kullanın.