REVISIÓN: Filtro no se inserta debajo agregado si subconsulta utiliza la palabra clave DISTINCT

Seleccione idioma Seleccione idioma
Id. de artículo: 323721 - Ver los productos a los que se aplica este artículo
Nº DE ERROR: 357417 (SHILOH_BUGS)
Expandir todo | Contraer todo

Síntomas

SQL Server puede seleccionar un plan de consulta que se aplica un filtro después de una función de agregado. Aunque, aplicar el filtro antes de la función de agregado, se proporcionaría un plan más rápido. Esto puede ocurrir si se cumplen los criterios siguientes:
  • La consulta tiene una subconsulta que utiliza la palabra clave DISTINCT.

  • La consulta externa incluye un predicado que hace referencia a una columna de cadena que restringe los resultados.

  • El predicado (referenciado en la viñeta anterior) pasa la columna de cadena:

    • Una función definida por el usuario.

      -o bien -

    • Función intrínseca (por ejemplo, un operador LIKE).

    -o bien -

    La comparación implica la conversión de tipo de datos implícitas o explícitas.

Solución

Para resolver este problema, consiga el Service Pack más reciente para Microsoft SQL Server 2000. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290211INF: Cómo obtener el Service Pack más reciente de SQL Server 2000
Nota : la revisión siguiente se creó antes del lanzamiento de Service Pack 3 de Microsoft SQL Server 2000.

La versión en inglés de esta revisión tiene los atributos de archivo enumerados en la siguiente tabla u otros posteriores. Las fechas y horas de estos archivos aparecen en la hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   Date          Time    Version     Size              File name
   -----------------------------------------------------------------

   29-May-2002   19:46   8.00.0634   7,454,801 bytes   Sqlservr.exe     
Nota: debido a la interdependencia entre archivos, el más reciente revisión o característica que contiene los archivos quizás contenga también archivos adicionales.


Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.
Este problema se corrigió por primera vez en el Service Pack 3 de Microsoft SQL Server 2000.

Más información

Por ejemplo, con esta consulta:
SELECT * 
FROM (SELECT DISTINCT au_lname, au_fname FROM pubs.dbo.authors) AS t
WHERE au_lname LIKE 'White'
Pack 2 de SQL Server 2000 puede seleccionar un plan así:
StmtText
--------------------------------------------------------------------------------------
  |--Filter(WHERE:(like([authors].[au_lname], 'White', NULL)))
       |--Stream Aggregate(GROUP BY:([authors].[au_lname]))
            |--Index Scan(OBJECT:([pubs].[dbo].[authors].[aunmind]), ORDERED FORWARD)
después de aplicar la revisión, el plan se cambia a esto:
StmtText
--------------------------------------------------------------------------------------
  |--Stream Aggregate(GROUP BY:([authors].[au_lname]))
       |--Index Seek(OBJECT:([pubs].[dbo].[authors].[aunmind]), 
          SEEK:([authors].[au_lname] >= 'White' AND [authors].[au_lname] <= 'White'), 
          WHERE:(like([authors].[au_lname], 'White', NULL)) ORDERED FORWARD)

Propiedades

Id. de artículo: 323721 - Última revisión: martes, 27 de septiembre de 2005 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
Palabras clave: 
kbmt kbhotfixserver kbqfe kbbug kbfix kbsqlserv2000presp3fix kbsqlserv2000sp3fix KB323721 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): 323721

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