Una cláusula de JOIN en el SQL combina expedientes a partir de dos tablas en una base de datis relacional y resultados en un nuevo (" temporary") tabla, también llamada un " table" unido;.
También usted puede pensar del ENSAMBLAR como operación del SQL que relacione las tablas por medio de los valores que comparten en campo común. El SQL especifica dos tipos de ensambla: INTERNO y EXTERNO.
Un programador escribe un predicado del unido para identificar los expedientes para ensamblar. Si el predicado evalúa verdad, después el expediente combinado se inserta en la tabla (temporal) unida; si no, no contribuye. Cualquier predicado apoyado por el SQL puede convertirse en un ensamblar-predicado, por ejemplo, del DONDE -clauses.
Como caso especial, una tabla (tabla baja, visión, o tabla unida) puede ensamblar a sí mismo en un uno mismo-ensambla .
Matemáticamente, un ensamblar consiste en una composición de la relación. Proporciona la operación fundamental en la álgebra emparentada y generaliza la composición de la función.
Todas las explicaciones subsecuentes encendido ensamblan mecanografían adentro este artículo hacen uso de las dos tablas siguientes. Las filas en estas tablas sirven ilustrar el efecto de diversos tipos de ensamblan y los ensamblar-predicados.
Un interno ensambla esencialmente combina los expedientes a partir de dos tablas (A y B) basado en un ensamblar-predicado dado. El SQL-motor computa el cruz-producto de todos los expedientes en las tablas. Así, el proceso combina cada expediente en la tabla A con cada expediente en la tabla B. Solamente sigue habiendo esos expedientes en la tabla unida que satisfacen el predicado del unido. Este tipo de ensambla ocurre lo más comúnmente posible en usos, y representa el ensamblar-tipo del defecto.
especifica dos diversas maneras sintácticas de expresar ensambla. El primer, llamado " explícito ensamblar el notation", aplicaciones la palabra clave JOIN, mientras que el segundo utiliza el " implícito ensamblar el notation". El implícitos ensamblan listas de la notación las tablas para ensamblar en la cláusula de FROM de una declaración de SELECT, usar comas para separarlas. Así, computa siempre un cruz-ensamblar, y la cláusula de WHERE puede aplicar filtro-predicados adicionales. Esos filtro-predicados funcionan comparable a los ensamblar-predicados en la notación explícita.
Uno puede clasificar más lejos interno ensambla como equi-ensambla, como natural ensambla, o como cruz-ensambla.
Los programadores deben tomar cuidado especial cuando ensamblar las tablas en las columnas que pueden contener el NULO valora, puesto que la FALTA DE INFORMACIÓN nunca emparejará cualquier otro valor (o aún ANULARSE), a menos que la condición del unido utilice explícitamente los predicados del IS NULL o del IS NO NULL.
Como ejemplo, la pregunta siguiente toma todos los expedientes de la tabla del empleado y encuentra los expedientes que emparejan en la tabla del departamento, basada en el predicado del unido. El predicado del unido compara los valores en la columna de DepartmentID en ambas tablas. Si no encuentra ninguÌn fósforo (es decir, la departamento-identificación de un empleado no empareja la departamento-identificación actual de la tabla del departamento), después el expediente unido sigue siendo exterior la tabla unida, es decir, fuera del resultado (del intermedio) del ensamblar.
El ejemplo de un interno explícito ensambla:
SELECCIONAR * De empleado INTERNO ENSAMBLAR el departamento EN employee.DepartmentID = department.DepartmentID
El ejemplo de un interno implícito ensambla:
SELECCIONAR * De empleado, departamento DONDE employee.DepartmentID = department.DepartmentID
Internos explícitos ensamblan resultado:
Un equi-ensambla (también conocido como equijoin ), un tipo específico de comparador-basado ensambla, o la theta del ensambla, comparaciones de la igualdad de las aplicaciones solamente en el ensamblar-predicado. Usar otros operadores de comparación (tales como < ) descalifica un ensamblar como equi-ensamblar. La pregunta demostrada arriba ha proporcionado ya un ejemplo de un equi-ensamblar:
SELECCIONAR * De empleado INTERNO ENSAMBLAR el departamento EN employee.DepartmentID = department.DepartmentID
La tabla unida resultante contiene dos columnas nombradas DepartmentID, uno de empleado de la tabla y uno del departamento de la tabla.
SQL: 2003 no tiene un sintaxis específico a expresar equi-ensambla, pero algunos motores de base de datos proporcionan un sintaxis de la taquigrafía: por ejemplo, el MySQL y el PostgreSQL apoyan el USING (DepartmentID) además del sintaxis del ON… .
Un natural ensambla ofertas que otra especialización de equi-ensambla. El predicado del unido se presenta implícito comparando todas las columnas en ambas tablas que tengan el mismo columna-nombre en las tablas unidas. La tabla unida resultante contiene solamente una columna para cada par de columnas igual-nombradas.
La pregunta antedicha de la muestra para interno ensambla se puede expresar como natural ensambla así:
SELECCIONAR * Del empleado NATURAL ENSAMBLAR el departamento
El resultado aparece levemente diferente, sin embargo, porque solamente una columna de DepartmentID ocurre en la tabla unida.
Una cruz del ensambla o el cartesiano ensambla proporciona la fundación sobre la cual todos los tipos de interno ensamblan funcionan. Una cruz ensambla vueltas el producto de cartesiano de los sistemas de expedientes de las dos tablas unidas. Así, compara a un interno ensambla donde la ensamblar-condición evalúa siempre al verdadero.
Si A y B es dos sistemas, después la cruz ensambla = A x B.
El código del SQL para una cruz ensambla listas las tablas para ensamblar ( del de ), pero no incluye ninguÌn ensamblar-predicado de filtración.
El ejemplo de una cruz explícita ensambla:
SELECCIONAR * DE CRUZ del empleado ENSAMBLAR el departamento
El ejemplo de una cruz implícita ensambla:
SELECCIONAR * De empleado, departamento;
Un externo ensambla no requiere cada expediente en las dos tablas unidas tener un expediente que empareja en la otra tabla. La tabla unida conserva cada uno registrar-uniforme si existe ninguÌn otro expediente que empareja. Externo ensambla se subdividen más lejos en externo izquierdo ensambla, externo derecho ensambla, y externo lleno ensambla, dependiendo de cuyos de cuadros uno conserva las filas (a la izquierda, a la derecha, o ambos).
(Para que una tabla califique como dejado o derecho su nombre tiene que aparecer después de la palabra clave de FROM o de JOIN, respectivamente.)
Ninguna ensamblar-notación implícita para externo ensambla existe en el SQL: 2003.
El resultado de un dejado externo ensambla para las tablas A y B contiene siempre todos los expedientes del " left" tabular (a), incluso si la ensamblar-condición no encuentra ninguÌn expediente que empareja en el " right" tabla (b). Esto significa que si cláusula de ON empareja (la cero) los expedientes 0 en B, el ensamblar todavía volverá una fila en resultado-pero con la FALTA DE INFORMACIÓN en cada columna del B. Esto significa que un externo izquierdo del ensambla vueltas de todos los valores de la tabla izquierda, más valores emparejados de la tabla derecha (o la FALTA DE INFORMACIÓN en caso de ninguÌn emparejar ensamblar el predicado).
Por ejemplo, esto permite que encontremos el departamento de un empleado, pero todavía que demostremos a empleado incluso cuando no existe su departamento (contrario al ejemplo del interno-unido arriba, donde los empleados en departamentos no existentes consiguen filtrados hacia fuera).
El ejemplo de un externo izquierdo ensambla (nuevo):
SELECCIONAR * De empleado EXTERNOS IZQUIERDOS ENSAMBLAN el departamento EN employee.DepartmentID = department.DepartmentID
Un externo derecho ensambla se asemeja de cerca a externo izquierdo ensambla, a menos que con las tablas invirtiera. Cada expediente del " right" la tabla (b) aparecerá en la tabla unida por lo menos una vez. Si ninguna fila que empareja del " left" la tabla (a) existe, FALTA DE INFORMACIÓN aparecerá en columnas de A para esos expedientes que no tengan ninguÌn fósforo en el A.
Un externo derecho ensambla vueltas todos los valores de la tabla derecha y los valores emparejados de la tabla izquierda (la FALTA DE INFORMACIÓN en caso de ninguÌn emparejar ensambla predicado).
Externos derechos del ejemplo ensamblan:
SELECCIONAR * De empleado EXTERNOS DERECHOS ENSAMBLAN el departamento EN employee.DepartmentID = department.DepartmentID
Un externo ensambla por completo cosechadoras de que los resultados de ambos externos izquierdos y derechos ensamblan. La tabla unida contendrá todos los expedientes de ambas tablas, y llena adentro anula para los fósforos que falta de cualquier lado.
El ejemplo externo ensambla por completo:
SELECCIONAR * De empleado EXTERNOS LLENOS ENSAMBLAN el departamento EN employee.DepartmentID = department.DepartmentID
Mucho trabajo en base de datos-sistemas ha tenido como objetivo la puesta en práctica eficiente de ensambla, porque los sistemas emparentados piden comúnmente ensamblan, con todo las dificultades de la cara en la optimización de su ejecución eficiente. El problema se presenta porque (interno) ensambla funcionan el Commutatively y el asociativo en la práctica, esto significa que el usuario suministra simplemente la lista de tablas para ensamblar y las condiciones del unido al uso, y el sistema de base de datos tiene la tarea de determinar la mayoría del modo eficaz de realizar la operación. Un optimizador de la pregunta determina cómo ejecutar contener de la pregunta ensambla. Un optimizador de la pregunta tiene dos libertades básicas: el del
ensambla la orden : Porque ensambla la función commutatively, la orden en la cual el sistema ensambla las tablas no cambia el final resultado-fijó de la pregunta. Sin embargo, el de la ensamblar-orden hace tiene un impacto enorme en el coste de la operación del unido, así que eligiendo el mejor ensamblar la orden llega a ser muy importante.
Muchos ensamblar-algoritmos tratan sus entradas diferentemente. Uno puede referir a las entradas a un ensamblar como el " outer" y " inner" ensamblar los operandos, o el " left" y " right", respectivamente. En el caso de lazos jerarquizados, por ejemplo, el sistema de base de datos explorará la relación interna entera para cada fila de la relación externa.
Uno puede clasificar los preguntar-planes que implican ensambla como sigue:
; izquierdo-profundo: usar una tabla baja (algo que otra ensamblar) como el operando interno de cada uno ensamblar en el plan ; derecho-profundo: usar una tabla baja como el operando externo de cada uno ensamblar en el plan ; espeso: ni izquierdo-profundo ni derecho-profundo; ambas entradas a un ensamblar pueden ellos mismos resultar de ensamblan
Estos nombres derivan del aspecto del plan de la pregunta si es exhausto como árbol, con el externo ensamblar la relación a la izquierda y la relación interna a la derecha (como los dictados de la convención).
Tres algoritmos fundamentales existen para realizar una operación del unido.
considera también: El lazo jerarquizado ensambla el
El uso de lazos jerarquizados produce el ensamblar-algoritmo más simple. Para cada Tuple en el externo ensamblan la relación, las exploraciones del sistema el entero interno-ensamblan la relación y añaden cualquier tuples que empareje la ensamblar-condición al sistema del resultado. Naturalmente, este algoritmo se realiza mal con ensamblar-relaciones grandes: interno o externo o ambos. Un índice en columnas en la relación interna en el ensamblar-predicado puede realzar funcionamiento.
El " Quot de los lazos jerarquizados del bloque; El acercamiento (BNL) ofrece un refinamiento a esta técnica: para cada bloque en la relación externa, el sistema explora la relación interna entera. Para cada fósforo entre el tuple e interno el actual de los tuples en el bloque actual de la relación externa, el sistema agrega un tuple al ensamblar resultado-fijó. Esta variante significa hacer más cómputo para cada tuple de la relación interna, pero lejos pocas exploraciones de la relación interna.
Si ambos ensamblan las relaciones vienen en la orden, clasificada por las cualidades del unido, el sistema pueden realizar el ensamblar trivial, así:
para cada tuple en la relación externa, Considerar el " actual; group" de tuples de la relación interna; un grupo consiste en un sistema de tuples contiguos en la relación interna con el mismo valor en la cualidad del unido.
La fusión ensambla razón de la oferta una por la que muchos optimizadores no pierden de vista la orden de la clase producida por plan de la pregunta operador-si llegan una o amba relaciones de la entrada a una fusión ensamblan clasificado ya en la cualidad del unido, el sistema no necesitan realizar una clase adicional. Si no, el DBMS necesitará realizar la clase, usar una clase externa para evitar generalmente consumir demasiada memoria.
considera también: La clasificación/intercalación ensambla el
considera también: El picadillo ensambla el
Un picadillo ensambla algoritmo puede producir equi-ensambla. El sistema de base de datos preforma el acceso a las tablas referidas construyendo tablas de elección arbitraria que en ensamblar-atribuye. Las operaciones de búsqueda en tablas de elección arbitraria funcionan mucho más rápidamente que a través de árboles del índice. Sin embargo, uno puede comparar valores desmenuzados solamente para la igualdad, no para otras relaciones.
.
| Random links: | Juan Venn | Lista de gobernadores coloniales en 1803 | GnuTLS | Otto F. Kernberg | Poro de Ryan |