Görünümler, bir ındexes çözümleniyor
Herhangi bir dizin olduğu gibi SQL Server dizinli görünüm, yalnızca sorgu iyileştiricisi, bunu yapmak yararlı belirlerse, sorgu planlamasını kullanmak bunu seçer.
Dizin oluşturulmuş görünümler herhangi bir sürümünde oluşturulmuş SQL Server. Içinde SQL Server sorgu iyileştiricisi, kuruluş, dizinli görünüm otomatik olarak düşünür. dizinli görünüm tüm diğer sürümleri kullanmak için , NOEXPAND tablo ipucu kullanılmalıdır.
The SQL Server sorgu iyileştiricisi uses an dizinli görünüm when the following conditions are met:
Bu oturum seçenekleri ON olarak küme:
ansi_nulls
ansi_padding
ansi_warnings
ARITHABORT
concat_null_yields_null
QUOTED_IDENTIFIER
NUMERIC_ROUNDABORT oturum seçeneği KAPALı olarak küme.
sorgu iyileştiricisi, aşağıdaki gibi bir sorgu görünüm, dizin sütunları ve öğeleri arasında bir eşleşme bulur:
Koşul yüklemler NEREDE aramak yan tümce
birleştirmek işlemleri
Toplama işlevleri
GROUP BY yan
Tablo başvuruları
sorgu iyileştiricisi tarafından kabul herhangi erişim düzenekleri maliyeti en düşük tahmini maliyet dizini kullanmak için var.
Sorguda başvurulan her tablo (doğrudan, veya onun altındaki tüm tablolar erişmek için bir görünüm genişletiliyor), karşılık gelen bir tabloya başvuru dizinlenmiş görünümün aynı olmalıdır küme üzerinde sorguda uygulanan ipuçları.
Not
READCOMMITTED ve READCOMMITTEDLOCK ipuçları farklı ipuçları bu bağlamda geçerli işlem yalıtım düzey bakılmaksızın her zaman kabul edilir.
küme seçenekleri ve tablo ipuçları için gerekenler dışında bir tablo dizini sorguda kapsayan olup olmadığını belirlemek için sorgu iyileştiricisi kullanan aynı kuralları şunlardır.Başka bir şey için kullanılacak dizinli görünüm bir sorguda belirtilmiş olması gerekir.
Sorguda açıkça FROM dizinlenmiş bir görünümde başvuru yok yan tümce dizin oluşturulmuş görünüm kullanmak sorgu iyileştiricisi için.Sorgu dizinlenmiş görünüme de bulunan temel tablolardaki sütunların başvurularını içerir ve dizinlenmiş görünümün kullanarak en düşük sağlıyorsa, sorgu iyileştiricisi tahminleri erişim mekanizması, maliyet sorgu iyileştiricisi dizinlenmiş görünümün seçer, bunların doğrudan sorguda başvurulan değil, benzer biçimde, temel tablo dizinleri seçer.Görünüm, sorguda belirtilen sütun birini veya birden fazlasını kapsayan için en düşük maliyet seçeneği sunar sürece sorgu tarafından başvurulan sütun içeriyorsa, sorgu iyileştiricisi görünümü seçebilirsiniz.
dizinli görünüm KIMDEN başvurulan sorgu iyileştiricisi işler yan tümce standart bir görünüm olarak.sorgu iyileştiricisi sorguyu en iyi duruma getirme işlemi başlangıcında görünüme tanımını genişletir.Sonra dizinli görünüm eşleşen gerçekleştirilir.dizinli görünüm, en iyi duruma getiricisi tarafından seçilmiş son yürütme planı, kullanılmış olabilir veya bunun yerine, plan görünümü gerekli veri görünümü tarafından başvurulan temel tablolar erişerek materialize.Iyileştirici en düşük maliyetli seçenek seçer.
Ipuçları ile dizinli görünümleri kullanma
Görünüm dizinler bir sorgu için sorgu EXPAND VIEWS ipucu kullanarak kullanılmasını engellemek veya NOEXPAND tablo ipucu KIMDEN belirtilen dizinli görünüm için bir dizin kullanımını zorlamak için kullanabileceğiniz yan tümce sorgu.Ancak, her sorgu için kullanılacak en iyi erişim yöntemleri dinamik olarak belirlemek sorgu iyileştiricisi bırakmalısınız.EXPAND ve NOEXPAND kullanımınız için belirli servis taleplerini burada sınama önemli ölçüde performansı olduğunu göstermiştir sınırlayın.
EXPAND VIEWS seçenek, sorgu iyileştiricisi herhangi bir görünüm dizin için tüm sorgu kullanmamanız belirtir.
Bir görünümü NOEXPAND belirtildiğinde, görünüm üzerinde tanımlı tüm dizinler kullanılarak sorgu iyileştiricisi dikkate alır.Isteğe bağlı ındex() yan tümcesinde belirtilen NOEXPAND belirtilen dizinler kullanmak için sorgu iyileştiricisi zorlar.NOEXPAND yalnızca dizinli görünüm için belirtilebilir ve değil dizinli görünüm için belirtilemez.
Görünümü içeren sorguda NOEXPAND kendisi EXPAND VIEWS belirtildiğinde, görünümü temel tabloları erişmek için genişletilir.Bu ipuçları, görünümü yapan sorgu herhangi bir tablo ipuçları içeriyorsa, temel tabloları yayılır.(Bu işlemin daha ayrıntılı olarak açıklanmıştır Görüntüleme ve çözümleme.) Görünümün temel tablolarına var ipuçları kümesi olduğu sürece birbiriyle aynı, dizinli görünüm ile eşlenmesi uygun sorgudur. Çünkü, bunlar doğrudan görünümden devralınan çoğu saat, bu ipuçlarını birbirlerine eşleşir.Ancak, sorgu, tablolar, görünümler yerine başvuruyor ve doğrudan bu tablolarına uygulanan ipuçları özdeş değil, sonra bir sorgu dizinli görünüm ile eşleştirmek için uygun değil.Sorgu görünümünde genişletme sonra sorguda başvurulan tablolar INDIS, PAGLOCK, ROWLOCK, TABLOCKX, UPDLOCK veya XLOCK ipuçları uygularsanız, dizinli görünüm eşleştirmek için uygun değil.
If a table hint in the form of INDEX (index_val[ ,...n] ) references a view in a query and you do not also specify the NOEXPAND hint, the index hint is ignored.Belirli bir dizin belirtmek için , NOEXPAND Ek Yardım düğmesini kullanın.
Genellikle, sorgu iyileştiricisi, dizinli görünüm için bir sorgu eşleştiğinde, tablo veya sorgu görünümlerinde belirtilen tüm ipuçlarını doğrudan dizinlenmiş görünüme uygulanır.dizinli görünüm kullanmak sorgu iyileştiricisi seçerse, doğrudan görünümde başvurulan tablolar için tüm ipuçlarını yayılır.Daha fazla bilgi için bkz:Görüntüleme ve çözümleme.Bu yayılma ipuçları katılmak için geçerli değildir.Yalnızca özgün konumlarına sorgudaki uygulanır.birleştirmek sorguları eşleşen dizin oluşturulmuş görünümler, sorgu iyileştiricisi tarafından kabul ipuçları.dizinli görünüm bir birleştirmek ipucu içeren bir sorgu parçası için eşleşen bir sorgu planı kullanılıyorsa, birleştirmek ipucu planda kullanılmaz.
Ipuçları dizin oluşturulmuş görünümler, tanımlarındaki verilmez. SQL Server 2008. Uyumluluk modunda 80 ve üstü SQL Server ipuçları, onları korumak için dizinli görünüm tanımı içinde veya dizin oluşturulmuş görünümler kullanan sorguları yürütme yok sayar. dizinli görünüm tanımında ipuçlarını kullanarak, bir sözdizimi hatası 80 uyumluluk modunda oluşturmaz, ancak bunlar dikkate alınmaz.