Compartir vía


Mejorar el rendimiento de las consultas de texto completo

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

La siguiente lista de recomendaciones ayudará a mejorar el rendimiento de las consultas de texto completo.

El rendimiento de las consultas de texto completo también se ve afectado por los recursos de hardware, como la memoria, la velocidad de disco y de CPU, y la arquitectura del equipo.

  • Desfragmente el índice de la tabla base mediante ALTER INDEX REORGANIZE.

  • Reorganice el catálogo de texto completo mediante ALTER FULLTEXT CATALOG REORGANIZE. Asegúrese de hacerlo antes de realizar pruebas de rendimiento porque la ejecución de esta instrucción produce una mezcla maestra de los índices de texto completo del 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, recomendamos usar una columna de clave menor en un índice de texto completo. int y bigint ofrecen el mejor rendimiento.

  • Al usar una clave de texto completo de un tipo entero, se evita una combinación con la tabla de asignación docid . Por consiguiente, este tipo de clave mejora el rendimiento de las consultas en un orden de magnitud y mejora el rendimiento del rastreo. Es posible que se produzcan más ventajas de rendimiento si la clave de texto completo también es la clave de índice agrupada.

  • Combine varios predicados CONTAINS en un predicado CONTAINS. En SQL Server puede especificar una lista de columnas en la consulta CONTAINS.

  • Si solo necesita información de clave de texto completo o de clasificación, use CONTAINSTABLE o FREETEXTTABLE en lugar de CONTAINS o FREETEXT, respectivamente.

  • Para limitar los resultados y aumentar el rendimiento, use el parámetro top_n_by_rank de las funciones CONTAINSTABLE y FREETEXTTABLE. top_n_by_rank permite volver a recuperar solo las coincidencias más pertinentes. 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 recuperación total suele ser necesaria en escenarios legales, pero puede ser menos importante que el rendimiento en escenarios empresariales como un sistema de comercio electrónico.

  • Compruebe el plan de consultas de texto completo para asegurarse de que se selecciona el plan de combinaciones 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. Puede usar la sugerencia de consulta OPTIMIZE FOR para hacer que la consulta realice la compilación con el valor deseado. Así se contribuye a lograr un plan de consultas determinista y un mejor rendimiento.

  • Demasiados fragmentos del índice de texto completo pueden conducir a una degradación sustancial del rendimiento de las consultas. Para reducir el número de fragmentos, reorganice el catálogo de texto completo mediante la opción REORGANIZE de la instrucción Transact-SQL ALTER FULLTEXT CATALOG. Esencialmente, esta instrucción combina todos los fragmentos en un único fragmento mayor y quita todas las entradas obsoletas del índice de texto completo.

  • En la búsqueda de texto completo de , los operadores lógicos especificados en CONTAINSTABLE (AND, OR) se pueden implementar bien como combinaciones de SQL o dentro de las funciones con valores de tabla de transmisión por secuencias (STVF) de ejecución de texto completo. Normalmente, las consultas con solo un tipo de operadores lógicos se implementan meramente mediante la ejecución de texto completo, mientras que las consultas que mezclan operadores lógicos también presentan combinaciones de 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 este motivo, se recomienda que, siempre que sea posible, se enmarquen las consultas con un solo tipo de operador lógico.

  • En el caso de las aplicaciones que contienen predicados de relación selectiva, las consultas que usan predicados relacionales selectivos y predicados de texto completo no selectivos pueden funcionar mejor cuando se escriben para usar el optimizador de consultas. Esto permite al optimizador de consultas decidir si puede explotar el predicado o una pila de intervalo para generar 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.

Búsqueda de texto completo en SQL Server 2008: características internas y mejoras

Consulte también

sys.dm_fts_memory_buffers (Transact-SQL)
sys.dm_fts_memory_pools (Transact-SQL)