Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
Следующий список рекомендаций может помочь вам улучшить производительность полнотекстовых запросов.
Аппаратные ресурсы, такие как память, скорость диска, скорость процессора и архитектура машины, могут влиять на производительность полнотекстовых запросов.
Дефрагментируйте индекс базовой таблицы с помощью ALTER INDEX REORGANIZE.
Переорганизуйте полнотекстовый каталог с помощью ALTER FULLTEXT CATALOG REORGANIZE. Слишком большое количество полнотекстовых фрагментов индекса может привести к значительному ухудшению производительности запросов. Эта инструкция объединяет все фрагменты в один более крупный фрагмент для каждого индекса, удаляя всю устаревшую информацию о вхождениях. Убедитесь, что вы выполняете эту инструкцию перед тестированием производительности, поскольку её выполнение вызывает основное слияние полнотекстовых индексов в данном каталоге.
В качестве полнотекстового ключевого столбца выбирайте небольшой столбец. Хотя поддерживается столбец размером 900 байт, используйте меньший столбец с ключом в полнотекстовом индексе. Использование типовint и bigint обеспечивает улучшенную производительность.
Использование целочисленного полнотекстового ключа позволяет избежать соединения с таблицей сопоставления docid, что повышает производительность запросов и обхода. Дополнительные повышения производительности возможны, если полнотекстовый ключ одновременно является кластеризованным индексным ключом.
Объедините несколько СОДЕРЖИТ предикатов в один
CONTAINSпредикат. В SQL Server можно задать список столбцов вCONTAINSзапросе.Если вам нужен только полнотекстовый ключ или информация о ранге, используйте CONTAINSTABLE или FREETEXTTABLE вместо
CONTAINSилиFREETEXT, соответственно.Чтобы ограничить результаты и повысить производительность, используйте параметр top_n_by_rank функций
FREETEXTTABLEandCONTAINSTABLE. Параметр top_n_by_rank позволяет извлекать только наиболее релевантные результаты. Используйте этот параметр только в том случае, если бизнес-сценарий не требует отзыва всех возможных попаданий (т. е. не требует полного отзыва).Примечание.
Полное отзыв обычно необходим для юридических ситуаций, но может быть менее важен, чем эффективность для бизнес-сценариев, таких как электронный бизнес.
Проверьте план полнотекстового запроса и убедитесь, что выбран подходящий план соединения. При необходимости используйте подсказку соединения или подсказку запроса. Если в полнотекстовом запросе используется параметр, то его начальное значение определяется планом запроса. Вы можете использовать
OPTIMIZE FORподсказку запроса , чтобы заставить запрос скомпилировать с нужным вам значением. Это позволит сделать план запроса детерминированным и повысить его производительность.В полнотекстовом поиске логические операторы, указанные в
CONTAINSTABLE (AND, OR), могут быть реализованы либо с помощью соединений Transact-SQL, либо в потоковых табличнозначных функциях (STVF) полнотекстового механизма выполнения. Обычно запросы с одним типом логических операторов реализуются исключительно полнотекстовым исполнением, тогда как запросы, смешивающие логические операторы, также имеют SQL-соединения. Логический оператор внутри полнотекстовой функции, возвращающей табличное значение (STVF), использует некоторые специальные свойства индекса, что делает её значительно быстрее, чем операции JOIN в SQL. По этой причине, где возможно, формулируйте запросы только с помощью одного типа логического оператора.Для приложений, содержащих избирательные реляционные предикаты, запросы с селективными реляционными предикатами и неселективными полнотекстовыми предикатами могут работать лучше всего, если они написаны с использованием оптимизатора запросов. Такой подход позволяет оптимизатору запросов определить, может ли он использовать проталкивание предикатов или диапазонов, чтобы построить эффективный план выполнения запроса. Данный подход более прост и часто более эффективен, чем индексирование реляционных данных в качестве полнотекстовых данных.
Связанные ресурсы
Средство полнотекстового поиска SQL Server 2008: возможности и улучшения