REVISIÓN: MERGE UNION no se utiliza con gran número de cláusulas UNION

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

En esta página

Síntomas

Las consultas que utilizan más de 20 ramas cláusula UNION ALL se ejecutan con una unión HASH, en lugar de la eficacia UNION MERGE, que hace que el uso de memoria excesiva y puede producir un error de la consulta. Una implicación de esto es que una vista con particiones distribuida con 24 nodos tiene planes diferentes y menos eficaces que una vista en 20 nodos.

Solución

Para resolver este problema, consiga el Service Pack más reciente para 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

Solución

Utilizar una sugerencia de consulta MERGE UNION se eludir este problema. Asegúrese de que las sugerencias del optimizador se han probado exhaustivamente antes de que se va a poner en producción.

Estado

Microsoft ha confirmado que este es un problema de SQL Server 2000. Este problema se corrigió por primera vez en SQL Server 2000 Service Pack 1.

Más información

Pasos para reproducir este comportamiento

  1. Abra una ventana en el Analizador de consultas.
  2. En el menú consulta , seleccione Mostrar Plan de ejecución .
  3. Ejecute la consulta siguiente:
    use Northwind
    go
    select top 1 * from
    (
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders 
    union all select orderid from orders
    ) xx
    order by orderid
    					
  4. Haga clic en la ficha Plan de ejecución y observe los resultados.
  5. Comentario la línea siguiente de la consulta:
    union all select orderid from orders
    					
  6. Ejecutar la consulta modificada y observe el cambio en plan en la ficha Plan de ejecución .

Propiedades

Id. de artículo: 295037 - Última revisión: jueves, 6 de noviembre de 2003 - Versión: 3.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
Palabras clave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295037 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): 295037

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