de Martin LE TARNEC

Sort merge


La unión “sort-merge” combina dos listas ordenadas como si fuera la cremallera de un pantalón. Ambos lados deben ser previamente ordenados por los predicados de la unión.

La unión “sort-merge” necesita los mismos índices que la unión “hash join”, que es un índice sobre las condiciones independientes para leer todos los registros candidatos en una sola lectura. Indexar los predicados de la unión es inútil. Hasta el momento, es exactamente lo mismo que para la unión “hash join”. Sin embargo, existe un aspecto es único para la unión “sort-merge”: la simetría absoluta. El orden de la unión no provoca ninguna diferencia ni siquiera para el rendimiento. Esta característica es muy útil para las uniones externas. Para los otros algoritmos, el lado de la unión externa (izquierdo o derecho) implica el orden de la unión pero no para la unión “sort-merge”. La unión “sort-merge” puede hacer una unión externa izquierda y derecha al mismo tiempo, la llamada “unión externa completa” (en inglés, full outer join). , como se muestra en la siguiente animación.

Figura 4.1 La unión “sort-merge” ejecuta una unión externa completa

Aunque la unión “sort-merge” funciona muy bien mientras las entradas estén ordenadas, es muy difícil usarla porque ordenar ambos lados es muy costoso. Por otro lado, la unión “hash join” necesita preprocesar solamente un lado.

La fuerza de la unión “sort-merge” aparece si las entradas ya están ordenadas. Es posible si se aprovecha el ordenamiento del índice para evitar las operaciones de ordenamiento. El Capítulo 6, “Ordenar y agrupar, explica este concepto en detalles. Sin embargo, el algoritmo de la unión “hash join” es mucho mejor en muchos casos.

Si te gusta mi manera de explicar, te encantará mi libro.

Hechos

  • La unión “sort-merge” no necesita índices sobre los predicados de la unión.

  • MySQL no soporta la unión “sort-merge” al 100%.

Previous pageNext page

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

Acerca del autor

Foto de Markus Winand

Markus Winand es defensor del resurgimiento del SQL. Su misión es la de presentar a los desarrolladores la evolución de SQL en el siglo XXI. Es posible contratar a Markus según disponibilidad o como orador o consultor en winand.at.

Adquiere tu libro

Portada de “Rendimiento SQL explicado”: Ardilla corriendo en la hierba

La esencia del tuning de SQL en 200 páginas

Compra ahora
(libro de bolsillo y/o PDF)

Contratar a Markus

La manera más rápida y fácil de beneficiarse de su extenso conocimiento y experiencia.
Aprende más »

Entrar en contacto con Markus

Suscríbete a listas de correoRSS FeedMarkus Winand en LinkedInMarkus Winand en XINGMarkus Winand en TwitterMarkus Winand en Bluesky
Copyright 2017-2025 Martin LE TARNEC, Markus Winand. All righs reserved.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacidad y RGPD