/ / Búsqueda de texto completo en SQL Server Performance - sql-server, sql-server-2008, full-text-search

Búsqueda de texto completo en el rendimiento del servidor SQL - sql-server, sql-server-2008, búsqueda de texto completo

Estamos utilizando el servidor Sql 2008 r2. Tenemos una mesa con alrededor de 4 registros lac. Estamos utilizando el índice de texto completo (título de la columna, nombre, descripción) en la tabla. Tenemos un procedimiento de búsqueda en esa tabla mediante el cual seleccionamos 10 registros de la tabla en base a la palabra clave. Cuando buscamos directamente en la base de datos utilizando SQL Server Management Studio, el procedimiento tarda de 0 a 3 segundos en base a las palabras clave y los registros en la tabla que pertenecen a esa palabra clave la primera vez. Pero la segunda búsqueda trae una búsqueda más rápida que 3 segundos. Por ejemplo, si tenemos "xxx" como palabra clave, supongamos que en la tabla tenemos 1000 registros, entonces solo demoramos 0 segundos en mostrar los registros. Pero si buscamos desde la palabra clave "yyy", en la tabla, si tenemos 22000 registros que coinciden con eso, tardaremos 2 segundos. No tengo idea de lo que podría salir mal aquí. Incluso cuando paso varias palabras clave para buscar, el tiempo de resultados de búsqueda aumenta. ¿Debo revisar algo en la configuración de SQL Server? Por favor ayuda.

Cualquier sugerencia será apreciada.

Respuestas

0 para la respuesta № 1

Esto es normal. Cuantos más resultados tenga, más tiempo le llevará producir la salida. Intenta paginar los resultados. Si obtienes los primeros 100 resultados 1..100 será mucho más rápido. Más tarde podrías usar la misma consulta pero 101..200 etc.

Otro problema podría ser la memoria RAM. Cuantos más resultados tenga, más almacenamiento necesitará para guardarlos antes de que se devuelvan.


0 para la respuesta № 2

Déjame entenderlo...

  1. Ejecutar una consulta la primera vez es más lento que la segunda vez,
  2. Cuando su consulta devuelve más registros, lleva más tiempo y
  3. Cuando busca más palabras clave (lo que aumenta la complejidad del filtro) lleva más tiempo

¿Lo estoy entendiendo bien?

Si es así, todos me parecen comportamientos bastante normales.

  1. MSSQL realiza el almacenamiento en caché de algún tipo, por lo que las ejecuciones posteriores de la misma consulta serán más rápidas
  2. Cuantos más registros se devuelvan, más tardará en mover los datos del servidor SQL a su máquina
  3. Cuanto más complejas sean las consultas / condiciones, más tiempo tardará en ejecutarse

0 para la respuesta № 3

En un RDBMS, la búsqueda de texto completo se puede realizar de dos maneras.

  1. sin indexación previa, cada fila debe ser escaneada para la palabra clave correspondiente o
  2. si la tabla se ha indexado específicamente para la búsqueda de texto completo (utilizando un índice invertido), el índice se utiliza para identificar todas las filas que coinciden con la palabra clave.

Si su consulta tiene varias palabras clave, en el primer método, cada fila debe buscarse tantas veces como haya palabras clave, y en el segundo, el índice debe buscarse para cada palabra clave.

Si la consulta requiere operaciones booleanas (debe incluir, no debe incluir, etc.), las filas de resultados deben construirse combinando varios conjuntos de resultados.

Por lo tanto, es natural que se espere que el tiempo de procesamiento aumente de forma lineal para múltiples consultas de texto completo o palabras clave booleanas.