FIX: consulta de texto que utiliza el predicado CONTAINS o FREETEXT, junto con el operador "OR" tarda mucho tiempo en ejecutarse en SQL Server 2008

Seleccione idioma Seleccione idioma
Id. de artículo: 2264562 - Ver los productos a los que se aplica este artículo
Microsoft distribuye las revisiones de Microsoft SQL Server 2008 como un archivo descargable. Solucionar el SQL Server 2008 debido a que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y todas las revisiones de la seguridad que se incluyeron con la anterior versión.
Expandir todo | Contraer todo

En esta página

Síntomas

Intenta ejecutar una consulta de texto completo de Microsoft SQL Server 2008. Sin embargo, observa que la consulta puede tardar mucho tiempo en que se ejecuta cuando la cláusula WHERE utiliza una de las dos formas siguientes:
  • CONTAINS() OR CONTAINS()
    
  • FREETEXT() OR FREETEXT()
    
    
Por ejemplo, la siguiente consulta de texto completo puede tardar mucho tiempo en ejecutarse:
SELECT COUNT(*) as qualifying_rows FROM T1 parent join T1 child on parent.id = child.id
WHERE FREETEXT(parent.col1, 'AAA') OR FREETEXT(child.col1, 'BBB')

Causa

Este problema se produce porque el optimizador de consultas de SQL Server 2008 no utiliza un plan de consulta óptimo.

Solución

SQL Server 2008 Service Pack 1

La corrección para este problema se publicó en primer lugar en el 9 de actualización acumulativa para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2083921Paquete 9 para SQL Server 2008 Service Pack 1 de la actualización de acumulado
NotaDebido a que las compilaciones son acumulativas, cada nueva revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
970365Se basa el SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Las revisiones de Microsoft SQL Server 2008 de se crean para determinados service pack de SQL Server. Debe aplicar una revisión de SQL Server 2008 Service Pack 1 para una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el siguiente service pack de SQL Server.

Después de aplicar la revisión, debe habilitar el indicador de traza 4199 para habilitar la corrección. Puede habilitar el indicador de traza, ejecute el comando "DBCC TRACEON(4199,-1)" o a través de la "-T" parámetro de inicio.

Solución

Para solucionar temporalmente este problema, utilice el operador "UNION" volver a escribir la consulta en lugar de utilizar CONTAINS o FREETEXT junto con el operador "OR".

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se refiere a:".

Referencias

Para obtener más información acerca de la cláusula CONTAINS y FREETEXT, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
CONTAINS (Transact-SQL)
CFREETEXT (Transact-SQL)
Para obtener más información sobre el modelo de servicio incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897Un modelo incremental de servicio está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados
Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499Los paquetes de actualización de nuevo el esquema de nomenclatura para el software de Microsoft SQL Server
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 2264562 - Última revisión: lunes, 30 de agosto de 2010 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
Palabras clave: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2264562 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 2264562

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com