2011-06-30 32 views

Respuesta

21

LOOP | HASH | MERGE son consejos de unión Especifica que la unión en la consulta debe usar bucles, hash o fusión. Usando LOOP | HASH | MERGE JOIN impone una unión particular entre dos tablas. LOOP no se puede especificar junto con RIGHT o FULL como un tipo de unión

Siempre debe usar INNER JOIN. Deje que el optimizador de consultas decida si quiere hacer un LOOP, MERGE o HASH join. Usted encontrará que en casi todos los casos el optimizador hará un mejor juicio. Cuál se usará y cuándo se puede encontrar en mi presentación http://sqlbits.com/Sessions/Event4/Understanding_Graphical_Execution_Plans.

+0

quote "Deje que el optimizador de consultas haya decidido (sic)" .. ¿Cómo se decide esto (bascialmente)? A través de las estadísticas? –

+1

Los diferentes tipos de combinación están optimizados para diferentes semánticas de consulta, y sí, en su mayoría se basan en estadísticas/cardinalidad, pero también otros factores como si un lado de la unión es mucho más grande que el otro lado, si la entrada de cada lado de la unión está ordenada, etc. Estoy con los demás ... si las publicaciones del blog sobre esto te están volviendo loco, es mucho mejor dejar que el optimizador decida hasta que hayas dominado las diferencias entre los tipos de uniones * y * siente que es más inteligente que el optimizador. –

+0

@ pure.Krone. Estás en lo correcto . Aunque el extact algo no lo conozco, sé que es una función de Estadísticas de las tablas e Índices subrayadas, la forma en que se crean los grupos de archivos para los objetos subrayados, no de los núcleos del servidor (MAXDOP) y muchos otros factores. Si quieres profundizar, te sugiero que leas el blog de Connor Cunningham, que es arquitecto principal de MS SQL Core. – Ash

8

Lo que usted se refiere a es join hint. Al igual que otras sugerencias, las sugerencias de unión solo deberían especificarse como último recurso, ya que la mayoría de las veces el servidor SQL elegiría el algoritmo correcto. Un buen artículo para explicar algo de esto es this.