2009-05-08 15 views

Respuesta

0

En este caso, debería ver cómo guardar los datos en b-tree después de que creo que comprenderá el algoritmo JOIN.

2

Existen diferentes algoritmos, dependiendo del servidor de base de datos, índices y orden de los datos (PK agrupado), si los valores calculados se unen o no, etc.

un vistazo a un plan de consulta, que la mayoría de los sistemas SQL puede crear para una consulta, debe darle una idea de lo que hace.

+0

¿algún artículo para comenzar? – henry

+0

¿Qué motor DB? – Lucero

+0

preferiblemente MySql – henry

-2

Crea un producto cartesiano de las dos tablas y luego selecciona las filas. Lea el libro de Korth sobre Bases de datos para el mismo.

+4

Estoy bastante seguro de que eso no es cierto, producir un producto cartesiano sería muy ineficiente – codeulike

+0

Estoy bastante seguro de que esto es lo que hay en el libro escrito por Korth. Las bases de datos modernas pueden no hacer eso. – Geek

+1

Si realiza una combinación externa completa con una condición que no se puede calcular antes de unirse, esto * puede * ser lo que ocurra. Pero para las uniones internas, eso no tendría mucho sentido, ya que produce demasiados registros. – Lucero

2

En MS Sql, se usarán diferentes algoritmos de unión en diferentes situaciones dependiendo de las tablas (su tamaño, qué tipo de índices están disponibles, etc.). Imagino que otros motores DB también usan una variedad de algoritmos.

Los principales tipos de Join utilizado por MS SQL son:
- bucles anidados se une
- Combinar une
- Las combinaciones hash

Puede leer más sobre ellos en esta página: Msdn -Advanced Query Tuning Concepts

Si obtiene SQL para mostrar el 'plan de ejecución' para sus consultas, podrá ver qué tipo de combinación se está utilizando en diferentes situaciones.

+0

¿Puedes arrojar luz sobre qué Algoritmos? – Geek

+0

Ver el enlace msdn en mi respuesta. Esa página se vincula a otras tres páginas de "comprensión ..." que resumen el algoritmo básico que SQL sigue en cada caso. – codeulike

2

Depende de la base de datos que esté utilizando, a qué se une (grande/pequeño, en secuencia/aleatorio, indexado/no indexado, etc.).

Por ejemplo, SQL Server tiene varios algoritmos de unión diferentes; loop une, merge joins, hash joins. El que se usa está determinado por el optimizador cuando está elaborando un plan de ejecución. Algunas veces hace un error de juicio y luego puede forzar un algoritmo de combinación específico mediante el uso de consejos de unión.

Usted puede encontrar los siguientes páginas MSDN interesantes:
http://msdn.microsoft.com/en-us/library/ms191318.aspx (circular)
http://msdn.microsoft.com/en-us/library/ms189313.aspx (hash)
http://msdn.microsoft.com/en-us/library/ms190967.aspx (fusionar)
http://msdn.microsoft.com/en-us/library/ms173815.aspx (consejos)

0

Toda la teoría de conjuntos basada, estado alrededor de un rato . Trate de no vincular demasiadas tablas al mismo tiempo, parece conquistar los recursos de la base de datos con todo el escaneo. Los índices ayudan con el rendimiento, analizan algunos sitios sql y buscan optimizar las consultas SQL para obtener información. SQL Management Studio tiene una utilidad de plan de ejecución incorporada que a menudo es interesante, especialmente para grandes consultas complejas.

0

El optimizador elegirá (o debería) el más rápido unirse al algo.

Sin embargo, hay dos tipos diferentes de determinar lo que es rápido:

  1. se mide el tiempo que tarda en volver todo las filas combinadas.
  2. Mide el tiempo que se tarda en devolver las primeras filas unidas.

Si desea devolver todas las filas lo más rápido posible, el optimizador a menudo elegirá una unión hash o una unión merge. Si desea devolver las primeras filas lo más rápido posible, el optimizador elegirá una unión de bucles anidados.

Cuestiones relacionadas