2010-07-30 13 views
6

Solo me pregunto si alguien tiene algún truco (o herramienta) que use para visualizar uniones. Ya sabes, escribes la consulta perfecta, presionas ejecutar, y después de que ha estado funcionando durante 20 minutos, te das cuenta de que probablemente has creado una unión cartesiana.Métodos de visualización de uniones

A veces tengo dificultades para visualizar lo que sucederá cuando agregue otra declaración de combinación y me pregunto si las personas tienen diferentes técnicas que usan cuando intentan juntar muchas combinaciones.

+8

Conozca sus datos, y conozca sus combinaciones - http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html –

+1

@OMGPonies que es la mejor respuesta para esto en lo que he pensado –

Respuesta

2

Siempre tenga en cuenta el final.

  1. averiguar cuáles son las columnas que necesita

  2. tratar de averiguar el número mínimo de mesas que serán necesarios para hacerlo.

  3. Escriba su parte FROM con la tabla que dará el número máximo de columnas. p. ej. FROM Teams T

  4. Agregue cada unión una por una en una nueva línea. Asegúrese de que necesitará UNIÓN EXTERIOR, INTERIOR, IZQUIERDA, DERECHA en cada paso.

Suelen funcionar para mí. Tenga en cuenta que es lenguaje de consulta estructurado. Siempre divida su consulta en líneas lógicas y es mucho más fácil.

0

Ejecuta un plan de explicación.

Estos son siempre los árboles jerárquicos (hacer este, primero debo hacer que). Existen muchas herramientas para convertir estos planes en árboles gráficos, algunos en navegadores SQL (por ejemplo, Oracle SQLDeveloper, se llame a cualquier cliente de GUI de SQlServer). Si no tiene una herramienta, la mayoría de la salida de texto del plan incluye una columna de "profundidad", que puede usar para sangrar la línea.

Lo que se quiere buscar es el costo de cada fila. (Tenga en cuenta que para Oracle, sin embargo, los costos más altos pueden significar menos tiempo, si permite a Oracle hacer una unión hash en lugar de bucles anidados, y si el conjunto de resultados final tiene una gran cardinalidad (muchas, muchas filas).)

1

Cada combinación combina dos conjuntos de resultados en uno. Cada uno puede ser de una sola tabla de base de datos o un conjunto de resultados temporales que es el resultado de una (s) unión (es) previa (s) o de una subconsulta.
Conozca siempre el orden en que se unen las uniones y, para cada combinación, conozca la naturaleza de los dos conjuntos de resultados temporales que está uniendo. Sepa qué entidad lógica representa cada fila en ese conjunto de resultados, y qué atributos en ese conjunto de resultados identifican de manera única a esa entidad. Si su unión está destinada a unir siempre una fila a una fila, estos atributos clave son los que debe usar (en condiciones de unión) para implementar la unión. Si su unión está destinada a generar algún tipo de producto cartesiano, entonces es fundamental comprender lo anterior para comprender cómo las condiciones de combinación (cualquiera que sean) afectarán la cardinalidad del nuevo conjunto de resultados.

Trate de ser coherente en el uso de las direcciones de unión externa. Intento usar siempre uniones izquierdas cuando necesito una combinación externa, ya que "pienso" que cada unión "une" la nueva tabla (a la derecha) a lo que ya he unido (a la izquierda) de la combinación izquierda declaración...

0

nunca he encontrado una herramienta mejor que pensarlo bien y el uso de mi propia mente.

Si la consulta es tan complicada que no puede hacer eso, puede usar CTE, vistas u otras subconsultas cuidadosamente organizadas para dividirla en partes lógicas para que pueda comprender y visualizar fácilmente cada pieza, incluso si no puede administrar el todo.

Además, si su preocupación es del effeciency, a continuación, SQL Server Management Studio 2005 o posterior le permite obtener los planes de ejecución de consultas calcula sin tener que ejecutar la consulta. Esto puede brindarle muy buenas ideas sobre dónde se encuentran los problemas, si está utilizando MS SQL Server.