Aracılığıyla paylaş


INDIS ve FORCESEEK sorgu ipuçları planı Kılavuzlar'kullanma

Ipuçları için INDIS ve FORCESEEK tablo, sorgu ipuçları belirtebilirsiniz.Bu ipuçları, sorgu ipuçları belirtildiğinde, aynı şekilde satır içi bir tablo veya Görünüm ipucu olarak davranır.

DIZIN ipucu, yalnızca belirtilen dizinler içinde başvurulan veriye erişmek için kullanmak için sorgu iyileştiricisi zorlar tablo veya sorgu görünümünde.Dizin arama yalnızca işlem içinde başvurulan veriye erişmek için kullanılacak en iyi duruma getiricisi FORCESEEK ipucu zorlar tablo veya Görünüm.Bu ipuçları SEÇENEĞININ kullanılabilir yan tümce, bir sorgunun en iyi duruma getirilmesi etkileyen bir plan kılavuzu.Bir sorgu planı kılavuz eşleştiğinde, planı kılavuzda belirtilen SEÇENEK yan tümce derler ve en iyi duruma getirir sorguya eklenir.Plan kılavuzları hakkında daha fazla bilgi için bkz: Plan Kılavuzları'nı anlama.

Uyarı

Sorgu ipuçları kötüye planı kılavuzları, derleme, yürütme veya performans sorunlarına neden olabilir.Plan kılavuzları, yalnızca deneyimli geliştiriciler ve veritabanı yöneticiler tarafından kullanılmalıdır.

Bir sorgu ipucu belirtildiğinde, DIZIN ve FORCESEEK tablo ipuçlarını aşağıdaki nesneler için geçerlidir:

  • Tablolar

  • Görünümler

  • Dizin oluşturulmuş görünümler

  • Sık kullanılan tablo ifadelerin (ipucu belirtilen ifade, sonuç kümesi ortak tablo ifade doldurur.)

  • Dinamik yönetimi görünümleri

  • Adlandırılmış alt sorgular

Tablo değerli işlevler, Tablo değişkenlerini veya OPENROWSET deyimlerini, tablo ipuçları belirtilemez.

dizinli görünüm için bir dizin ipucu belirtmek için , NOEXPAND ipucu da dizin ipucu dikkate alınmaz OPTION yan tümcesinde, aksi takdirde belirtilmelidir.Daha fazla bilgi için bkz:Görünümler, bir ındexes çözümleniyor.

INDIS ve FORCESEEK ipuçları sorgu ipuçları belirtmek için kullanılan sözdizimi hakkında daha fazla bilgi için bkz: Sorgu ipuçları (Transact-SQL).

En iyi yöntemler

Aşağıdaki en iyi uygulamalar önerilir:

  • Plan kılavuzu ifadeleri sınarken, yalnızca bir plan kılavuzu bağlamında veya geçici sorgularda, sorgu ipuçları olarak INDIS ve FORCESEEK ipuçlarını kullanın.Diğer tüm özel sorgular için bu ipuçlarını tablo ipuçları belirtin.

  • FORCESEEK ipucu kullanmadan önce veritabanı ile ilgili istatistik geçerli ve doğru olduğundan emin olun.

    Güncel istatistikleri doğru şekilde farklı sorgu planları maliyetini değerlendirmek ve yüksek kaliteli bir plan seçmek en iyi duruma getiricisi izin ver.Bu nedenle, AUTO_CREATE_STATISTICS ve AUTO_UPDATE_STATISTICS için ON (varsayılan) için her bir kullanıcının veritabanı ayarlanması önerilir.Alternatif olarak, el ile bir tablo veya Görünüm istatistiklerini kullanarak güncelleştirebilirsiniz İSTATİSTİKLERİ GÜNCELLEŞTİRME ekstresi.

  • Gereksiz DIZIN ipucu FORCESEEK birlikte kullanmayın.FORCESEEK tek başına yeterli bir plan üretir, diğer bir deyişle, aynı zamanda INDEX ipucu kullanarak aşırı derecede iyileştirici'nın seçimler sınırlayabilir.Ayrıca, bir DIZIN ipucu, sorgunuzu tablonuzu ipucu belirtilen dizin elemek için fiziksel şemasını değiştirirseniz başarısız olmasına neden olur.Buna ek olarak, kullanılabilir olan en az bir dizin FORCESEEK ipucu uygulandığı tablonun varolduğundan sürece, dizin yapılarını değiştirmek gibi sorgu derlenir.

  • DIZIN ipucu INDIS (0) ile FORCESEEK ipucu kullanmayın.INDIS (0), temel tablo taranmasını zorlar.FORCESEEK ile kullanıldığında, hiçbir planı bulunur ve 8622 hata döndürdü.

  • KULLANÝN PLANLA sorgu ipucu FORCESEEK ipucu kullanmayın.Bunu yaparsanız, FORCESEEK ipucunu göz ardı edilir.

INDIS ve FORCESEEK ipuçları, diğer bir tablo ipuçları ile kullanma

INDIS ve FORCESEEK ipuçları, varolan herhangi bir tablo ipuçları olmayan bir sorgu için belirtilen veya bir veya daha fazla varolan DIZIN veya FORCESEEK ipuçları sorgudaki değiştirmek için kullanılabilir.Bir plan kılavuzu zaten eşleşen bir sorgu için bu ipuçlarını tablo belirten bir WITH yan tümce varsa, ipuçlarını belirtilen @ ipuçları parametre planı kılavuzun sorgu içindeki yerini alır.Örneğin, sorgu tablosu ipucu içeriyorsa WITH INDEX (PK_Employee_EmployeeID) için HumanResources.Employee Tablo ve @ ipuçları parametresinde plan kılavuzu belirtir.OPTION (TABLE HINT ( HumanResources.Employee, INDEX( IX_Employee_ManagerID ) ), sorgu iyileştiricisi kullanacağı IX_Employee_ManagerID Index.

INDIS ve FORCESEEK olarak sorgu ipuçları izin verilenden tablo diğer ipuçları plan kılavuzu sorgu tablosu ipucu belirten bir WITH yan tümce yoksa.Bu durumda, eşleşen bir ipucu da bir sorgu ipucu sorgunun semantik korumak için SEÇENEK yan tümcesinde tablo IPUCU kullanılarak belirtilmeli.Örneğin, tablo, NOLOCK ipucunu sorgu içeriyorsa, @ ipuçları plan kılavuzu parametresi de NOLOCK ipucunu tüm INDEX veya FORCESEEK tablo ipucu SEÇENEĞI ek olarak içermelidir yan tümce.Örnek C, bu konunun ilerisinde bakın.Ne zaman INDEX veya FORCESEEK dışındaki bir tablo ipucu eşleşen bir sorgu ipucu olmadan OPTION yan tümcesindeki TABLO IPUCU kullanarak belirtilen veya tam tersi OPTION yan tümce semantik değiştirmek için , sorgunun neden olabileceğini gösteren hata 8702 oluşturulur ve sorgu başarısız olur.

INDIS ve FORCESEEK ipuçlarını diğer sorgu ipuçları ile birlikte kullanma

Bir plan kılavuzu zaten eşleşen bir sorgu, sorgu ipuçları belirten bir SEÇENEK yan tümce varsa, sorgu ipuçları belirtilen @ ipuçları parametre planı kılavuzun sorgu içindeki yerini alır.Sorgunun içinde eşleşmesi için metni belirttiğinizde ancak, bir SEÇENEK yan tümce içeren sorgu eşleştirmek bir plan kılavuzu, sorgunun OPTION yan tümce eklemeniz gerekir sp_create_plan_guide (Transact-SQL) deyim. Bunları değiştirmek yerine sorguya, zaten varolan ipuçları eklenecek plan kılavuzu belirtilen ipuçları isterseniz, özgün ipuçları hem de ek ipuçları SEÇENEĞINI belirtmelisiniz yan tümce planı kılavuzun.

Örnekler

C.FORCESEEK kullanma

Aşağıdaki örnek, FORCESEEK ipucu kullanır @hints plan kılavuzu parametre. Bu seçenek, bir dizin kullanmak için en iyi duruma getiricisi zorlar işlem içindeki verilere erişmek için arama HumanResources.Employee TABLO. Bu farklı bir tablo ipucu içinde belirtilen bir dizin kullanmak en iyi duruma getiricisi neden olabileceğini unutmayın.

b.Birden çok tablo ipuçlarını kullanarak

Aşağıdaki örnek, bir tablo ve diğer FORCESEEK ipucu INDIS ipucu uygular.

c.Ipuçlarını semantik etkileyen belirtme

Aşağıdaki örnek, sorgudaki iki tablo ipuçları içerir: Anlamsal etkileyen olan, NOLOCK ve non-anlambilim-etkileyen olan DIZIN. Sorgunun semantik korumak için , NOLOCK ipucunu SEÇENEKLER, belirtilen yan tümce planı kılavuzun.NOLOCK ipucunu, ek olarak INDIS ve FORCESEEK ipuçları belirtilir ve non-anlambilim-etkileyen INDIS ipucu sorgudaki deyim derlenmiş ve en iyi duruma getirilmiş değiştirmek.

Aşağıdaki örnekte, sorgunun semantik koruma ve tablo ipucu belirtilen dizin dışındaki bir dizin seçmek en iyi duruma getiricisi izin vermek için alternatif bir yöntem gösterilmektedir.Bu SEÇENEKLER, NOLOCK ipucunu belirleyerek yapılır yan tümce (anlambilim etkileyen çünkü) ve TABLE IPUCU anahtar yalnızca bir tablo başvurusu ile hiçbir DIZIN ipucu belirtmek.

d.Varolan bir tablonun ipucu geçersiz kılmak için tablo IPUCU kullanma

Aşağıdaki örnek, TABLE IPUCU bir DIZIN ipucu belirtmeden sorgunun FROM yan tümcesinde belirtilen INDEX tablo ipucu davranışını geçersiz kılmak için nasıl kullanılacağını gösterir.Bu yöntem, belirtilen dizin dışındaki bir dizin seçmek en iyi duruma getiricisi sağlar tablo ipucu.