Aracılığıyla paylaş


Dizinler üzerinde görünümler çözme

Herhangi bir dizini olduğu gibi SQL Server , sorgu planı eksikse dizin oluşturulmuş görünüm kullanmak seçer sorgu iyileştiricisi kılınırsa yapmak yararlı olduğunu belirleyen

Dizin oluşturulmuş görünümler'ın herhangi bir sürümünü oluşturulabilir SQL Server.De SQL Server kuruluş, sorgu iyileştiricisi otomatik olarak dizinli görünüm. düşünürDiğer tüm sürümlerde dizinli görünüm kullanmak için tablo noexpand ipucu kullanılmalıdır.

The SQL Server query optimizer uses an indexed view 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 off için 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:

    • where yan tümce tümce tümcesinde koşul yüklemler arama

    • Birleşim işlemleri

    • Toplama işlevleri

    • group by yan tümceleri

    • Tablo başvuruları

  • Dizini kullanarak için tahmini maliyet olarak kabul herhangi erişim düzenekleri en düşük maliyeti olan sorgu iyileştiricisi.

  • Her tablo başvurusud sorgudaki karşılık (doğrudan veya genişleterek kendi temel tablolara erimek için bir görünüm ile), gelir için bir tablo başvurusu dizinlenmiş görünümde aynı sorguda üzerinde uygulanan ipuçları olmalıdır.

    Not

    READCOMMITTED ve READCOMMITTEDLOCK ipuçları her zaman geçerli olsun bu bağlamda farklı ipuçları kabul işlem yalıtım düzey.

Bu gereksinimleri dışında seçeneklerini ayarlama ve tablo ipuçlarını, aynı kurallar şunlardır, sorgu iyileştiricisi tablosu dizini bir sorgu kapsayan olup olmadığını belirlemek için kullanır.Başka bir şey için kullanılacak dizinli görünüm sorguda belirtilmiş olması gerekir.

dizinli görünüm için dizinli görünüm kullanmak sorgu iyileştiricisi from yan tümce tümce tümcesinde açıkça başvurmak bir sorgu yok.Sorgu içeriyorsa, dizinli görünüm içinde de temel tablolardaki sütunların başvurularını sunmak ve sorgu iyileştiricisi tahminleri kullanarak dizinlenmiş görünümün en düşük maliyet erişim mekanizması sağlar, sorgu en iyi duruma getiricisi dizinli görünüm seçer, bunlar doğrudan sorguda başvurulan değil, benzer şekilde, temel tablo dizinleri seçer.sorgu iyileştiricisi Görünüm için bir veya daha sorguda belirtilen sütunları kapsayan en düşük maliyet seçeneği sunar sürece sorgu tarafından başvurulan sütunları içeren görünümü seçebilirsiniz.

sorgu iyileştiricisi from yan tümce tümce tümcesi standart bir görünüm olarak başvurulan bir dizinli görünüm değerlendirir.sorgu iyileştiricisi Sorgu en iyi duruma getirme işlemi başlangıcında içine görünümünün tanımını genişletir.Daha sonra dizinli görünüm eşleştirme yapılır.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 gerekli veri görünümü görünüm tarafından başvurulan temel tablolar erişerek materialize.En iyi duruma getiricisi en düşük maliyetli alternatif seçer.

Dizin oluşturulmuş görünümler ile ipuçlarını kullanarak

Görünüm dizinler için bir sorgu genişletin GÖRÜNÜMLER sorgu ipucu kullanarak kullanılmasını önlemek veya noexpand tablo ipucu, bir sorgunun from yan tümce tümce tümcesinde belirtilen dizinli görünüm için bir dizin kullanımını zorlamak için kullanabilirsiniz.Ancak, dinamik olarak belirlemek için her bir sorgu kullanmak için en iyi erişim yöntemleri sorgu iyileştiricisi izin vermelisiniz.Sınırlama genişletme ve noexpand kullanımınız için belirli durumlarda burada test önemli ölçüde performansı olduğunu göstermiştir.

sorgu iyileştiricisi herhangi bir görünüm dizinler tüm sorgu için kullanmamanız görünümleri genişletme seçeneğini belirtir.

Bir görünüm noexpand belirtildiğinde sorgu iyileştiricisi görünüm üzerinde tanımlı tüm dizinleri kullanarak dikkate alır.Belirtilen dizin kullanmak için sorgu iyileştiricisi isteğe bağlı İNDİS() yan tümce tümce tümcesinde belirtilen noexpand zorlar.noexpand yalnızca dizinli görünüm için belirtilen ve dizine bir görünüm için belirtilemez.

Ne noexpand ne de GÖRÜNÜMLER genişletin bir görünümü içeren bir sorgu belirtildiğinde, görünümün temel tablolara erimek için genişletilir.Tüm tablo ipuçlarını görünümü sağlar sorgu içeriyorsa, bu ipuçları için temel alınan tablolar yayılır.(Bu işlem daha ayrıntılı olarak açıklandığı Görünüm çözümleme.) Görünümün temel tablolarına var ipuçları küme olarak birbirinin, dizinli görünüm ile eşleşmesi uygun bir sorgudur.Bunlar doğrudan görünümden miras çoğu saat, bu ipuçları birbirlerine, aynı olacaktır.Ancak, tablolar, görünümler yerine sorgu başvuran ve bu tablolar üzerinde doğrudan uygulanan ipuçları özdeş değil, sonra böyle bir sorguyu dizinli görünüm ile eşleştirmek için uygun değil.Sonra Görünüm genişletme sorguda başvurulan tablolar dizin, paglock, satırı KİLİTLE, tablockx, updlock veya xlock ipuçlarını uygularsanız, sorgu eşleşen dizinli görünüm 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 kullanın.

Genellikle, ne zaman sorgu iyileştiricisi doğrudan dizinli görünüm için bir sorgu, belirtilen tablo veya sorgu görünümlerinde tüm ipuçları için dizinli görünüm uygulanan eşleşir.sorgu iyileştiricisi , dizinli görünüm kullanmamayı seçer 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ünüm çözümleme.Bu yayılması için geçerli değildir birleştirmek ipuçları.Bunlar yalnızca sorgudaki özgün konumlarına uygulanır.Birleştirme ipuçları olarak değil kabul edilir olarak sorgu iyileştiricisi ne zaman sorgu için eşleşen dizinlenmiş görünümler.Bir sorgu planı birleştirmek İpucu içeren bir sorgu parçası eşleşen dizinli görünüm kullanırsa, birleştirmek ipucu planında kullanılır.

İpuçları tanımlarında verilmez dizinli görünüms SQL Server 2008. Uyumluluk modunda 80 ve üzeri SQL Server içinde ipuçlarını yok sayıyor dizinli görünüm onları korurken tanımları veya yürütme sorguladığı zaman kullanan dizinli görünüms.dizinli görünüm tanımında ipuçlarını kullanarak 80 uyumluluk modunda bir sözdizimi hatasına neden olur, ancak bunlar yoksayılır.