Tam metin sorgularının performansını geliştirme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Aşağıdaki öneriler listesi, tam metin sorguların performansını artırmanıza yardımcı olabilir.

Bellek, disk hızı, CPU hızı ve makine mimarisi gibi donanım kaynakları, tam metin sorgularının performansını etkileyebilir.

  • ALTER INDEX REORGANIZE kullanarak temel tablonun indeksindeki parçalanmayı giderin.

  • REORGANIZE kullanarak tam metin kataloğunu yeniden düzenleme.ALTER FULLTEXT CATALOG Çok fazla tam metin indeks parçası, sorgu performansında önemli bir düşüşe yol açabilir. Bu ifade, tüm parçaları indeks başına tek bir büyük parçaya birleştirerek tüm bayat oluş bilgilerini kaldırır. Bu ifadeyi performans testinden önce çalıştırdığınızdan emin olun çünkü bu ifadeyi çalıştırmak katalogdaki tam metin indekslerin ana birleşmesine neden olur.

  • Tam metin anahtar sütunları seçiminizi küçük bir sütunla kısıtlayın. 900 baytlık bir sütun desteklense de, tam metin indeksinde daha küçük bir anahtar sütunu kullanın. int ve bigint en iyi performansı sağlar.

  • Tam sayı tam metin anahtarı kullanmak, docid eşleme tablosuyla birleşmeyi önler; bu da sorgu ve tarama performansını artırır. Tam metin anahtarı aynı zamanda kümelenmiş indeks anahtarı ise ek performans iyileştirmeleri mümkündür.

  • Birden fazla CONTAINS predikatını tek bir CONTAINS predikatta birleştirin. SQL Server'da sorguda sütun CONTAINS listesi belirtebilirsiniz.

  • Yalnızca tam metin anahtar ya da sıralama bilgisi gerekiyorsa, sırasıyla CONTAINS veya FREETEXT yerine CONTAINSTABLE ya da FREETEXTTABLE kullanın.

  • Sonuçları sınırlamak ve performansı artırmak için, FREETEXTTABLE ve CONTAINSTABLE işlevlerinin top_n_by_rank parametresini kullanın. top_n_by_rank yalnızca en alakalı sonuçları getirmenizi sağlar. Bu parametreyi yalnızca iş senaryonuzda tüm olası isabetlerin geri çağrılması gerekmiyorsa (yani toplam geri çekme gerektirmez) kullanın.

    Uyarı

    Tam geri çağırma genellikle yasal senaryolar için gereklidir, ancak e-iş gibi iş senaryolarında performansa göre daha az önemli olabilir.

  • Uygun birleştirme planının seçildiğinden emin olmak için tam metin sorgu planını denetleyin. Gerekirse birleştirme ipucu veya sorgu ipucu kullanın. Tam metin sorgusunda bir parametre kullanılıyorsa, sorgu planını parametrenin ilk kez değeri belirler. OPTIMIZE FOR Sorgu ipucunu kullanarak sorguyu istediğiniz değerle derlemeye zorlayabilirsiniz. Bu, belirlenimci bir sorgu planı ve daha iyi performans elde edilmesine yardımcı olur.

  • Tam metin aramasında, CONTAINSTABLE (AND, OR) içinde belirtilen mantıksal işleçler, Transact-SQL birleştirmeleri olarak veya tam metin yürütme akışı tablo değerli işlevlerinin içinde uygulanabilir. Genellikle, yalnızca bir tür mantıksal operatöre sahip sorgular tamamen tam metin yürütme ile uygulanırken, mantıksal operatörleri karıştıran sorgular SQL birleşimlerine de sahiptir. Tam metin yürütme STVF'sinin içindeki bir mantıksal işlecin uygulanması, SQL birleşimlerinden çok daha hızlı olmasını sağlayan bazı özel dizin özelliklerini kullanır. Bu nedenle, mümkünse, sorgularınızı yalnızca tek bir mantıksal operatör türü kullanarak çerçeveleyin.

  • Seçici ilişkisel predikatlar içeren uygulamalar için, seçici ilişkisel önlemler ve seçici olmayan tam metin önlemleri kullanan sorgular, sorgu optimizatorunu kullanmak üzere yazıldığında en iyi performans gösterebilir. Bu yaklaşım, sorgu optimizatorunun etkili bir sorgu planı oluşturmak için predicate veya range pushdown kullanıp kullanamayacağına karar vermesini sağlar. Bu yaklaşım, ilişkisel verilerin tam metin verileri olarak dizine alınmasından daha basit ve genellikle daha verimlidir.

SQL Server 2008 Tam Metin Arama: İç ve Geliştirmeler