Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
La siguiente lista de recomendaciones puede ayudarte a mejorar el rendimiento de las consultas en texto completo.
Recursos hardware como la memoria, la velocidad del disco, la velocidad de la CPU y la arquitectura de la máquina pueden influir en el rendimiento de las consultas en texto completo.
Desfragmente el índice de la tabla base mediante ALTER INDEX REORGANIZE.
Reorganizar el catálogo de texto completo mediante ALTER FULLTEXT CATALOG REORGANIZE. Demasiados fragmentos de índice en texto completo pueden provocar una degradación sustancial del rendimiento de las consultas. Esta sentencia fusiona todos los fragmentos en un único fragmento más grande por índice, eliminando toda la información de ocurrencias obsoleta. Asegúrate de ejecutar esta instrucción antes de hacer pruebas de rendimiento porque ejecutarla provoca una fusión maestra de los índices de texto completo de ese catálogo.
Limite la selección de columnas de clave de texto completo a una columna pequeña. Aunque se admite una columna de 900 bytes, utiliza una columna clave más pequeña en un índice de texto completo. int y bigint ofrecen el mejor rendimiento.
Usar una clave entera en texto completo evita una unión con la tabla de mapeo docid , lo que mejora el rendimiento de consultas y rastreo. Son posibles mejoras adicionales en el rendimiento si la clave de texto completo también es la clave índice agrupada.
Combina varios predicados CONTAINS en un solo
CONTAINSpredicado. En SQL Server, puedes especificar una lista de columnas en laCONTAINSconsulta.Si solo necesitas información de clave o rango en texto completo, usa CONTAINSTABLE o FREETEXTTABLE en lugar de
CONTAINSoFREETEXT, respectivamente.Para limitar los resultados y aumentar el rendimiento, utiliza el parámetro top_n_by_rank de las
FREETEXTTABLEfunciones yCONTAINSTABLE. top_n_by_rank permite recuperar solo los resultados más relevantes. Use este parámetro solo si el escenario empresarial no requiere recuperar todos los posibles aciertos (es decir, no requiere recuperación total).Nota:
La retirada total suele ser necesaria para escenarios legales, pero puede ser menos importante que el rendimiento en escenarios empresariales como un negocio electrónico.
Compruebe el plan de consulta de texto completo para asegurarse de que se selecciona el plan de combinación adecuado. Use una sugerencia de combinación o una sugerencia de consulta si es necesario. Si se usa un parámetro en la consulta de texto completo, el valor de primera vez del parámetro determina el plan de consultas. Puedes usar la
OPTIMIZE FORsugerencia de consulta para forzar la compilación de la consulta con el valor que desees. Así se contribuye a lograr un plan de consultas determinista y un mejor rendimiento.En la búsqueda de texto completo, los operadores lógicos especificados en
CONTAINSTABLE (AND, OR)pueden implementarse tanto como uniones Transact-SQL como dentro de las funciones de ejecución de texto completo con valores de tabla de flujo (STVF). Normalmente, las consultas con un solo tipo de operador lógico se implementan únicamente mediante ejecución en texto completo, mientras que las consultas que combinan operadores lógicos también poseen uniones SQL. La implementación de un operador lógico dentro de la STVF de ejecución de texto completo utiliza algunas propiedades de índice especiales que hacen que sean mucho más rápidas que las combinaciones de SQL. Por esta razón, siempre que sea posible, enmarca tus consultas usando solo un tipo de operador lógico.Para aplicaciones que contienen predicados relacionales selectivos, las consultas que usan predicados relacionales selectivos y predicados de texto completo no selectivos pueden rendir mejor cuando se escriben para usar el optimizador de consultas. Este enfoque permite al optimizador de consultas decidir si puede explotar el pushdown de predicados o de rango para producir un plan de consulta efectivo. Este enfoque es más sencillo y a menudo más eficaz que indizar los datos relacionales como datos de texto completo.
Recursos relacionados
Búsqueda de texto completo en SQL Server 2008: características internas y mejoras