Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Optimizar Consulta

Estas en el tema de Optimizar Consulta en el foro de SQL Server en Foros del Web. Buenas Días Ante todo les quiero pedir disculpas por si ofendo a alaguen con la pregunta. Estoy haciendo mis primeros pasos en la optimización de ...
  #1 (permalink)  
Antiguo 07/07/2015, 06:02
 
Fecha de Ingreso: julio-2015
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Optimizar Consulta

Buenas Días

Ante todo les quiero pedir disculpas por si ofendo a alaguen con la pregunta.

Estoy haciendo mis primeros pasos en la optimización de las consultas. En este caso cuento con dos tablas sin indices para ver que arquitectura de la consulta resulta ser mas eficiente sin que la afecte uso de Indices.

Cuento con dos tablas T1 (CODIGO,NOMBRE,DIRECCION,BARRIO) - 1.000.000 registros y T2 (CODIGO, NOMBARRIO) con 50 regitros.

Tengo entendido que la mejor manera de hacer una query es en From poner la tabla con menor cantidad de registros (por el tema de la c) y en Inner join la mas grande, arme 4 versiones de misma consulta para ver cual de todas resulta ser mas eficiente en lo que es el tiempo de CPU, Logics Reads y Elapsed Time pero los resultados obtendos me dieron lo contrario, los mejores resultados obtuve en la query cual en From tenia la tabla mas grande.
Sabrían decirme porque ocurrió esto.
Aca les paso las consultas y sus resultados

Desde ya muchas Gracias

C.P.U. = 358 LOGIC READS T1 = 10.286 ELAPSED TIME = 1.032
Código SQL:
Ver original
  1. SELECT
  2.     T1.NOMBRE,
  3.     T1.DIRECCION,
  4.     T2.NOMBARRIO
  5. FROM T1
  6. INNER JOIN T2 ON T1.BARRIO = T2.CODIGO
  7. WHERE T1.BARRIO = '001'

C.P.U. = 250 LOGIC READS T1 = 10.286 ELAPSED TIME = 883 *
Código SQL:
Ver original
  1. SELECT
  2.     T1.NOMBRE,
  3.     T1.DIRECCION,
  4.     T2.NOMBARRIO
  5. FROM T1
  6. INNER JOIN T2 ON T1.BARRIO = T2.CODIGO
  7. WHERE T2.CODIGO = '001'

C.P.U. = 374 LOGIC READS T1 = 10.286 ELAPSED TIME = 1.028
Código SQL:
Ver original
  1. SELECT
  2.     T1.NOMBRE,
  3.     T1.DIRECCION,
  4.     T2.NOMBARRIO
  5. FROM T2
  6. INNER JOIN T1 ON T1.BARRIO = T2.CODIGO
  7. WHERE T1.BARRIO = '001'


C.P.U. = 327 LOGIC READS T1 = 10.286 ELAPSED TIME = 1.018
Código SQL:
Ver original
  1. SELECT
  2.     T1.NOMBRE,
  3.     T1.DIRECCION,
  4.     T2.NOMBARRIO
  5. FROM T2
  6. INNER JOIN T1 ON T1.BARRIO = T2.CODIGO
  7. WHERE T2.CODIGO = '001'

Última edición por gnzsoloyo; 07/07/2015 a las 06:16
  #2 (permalink)  
Antiguo 07/07/2015, 06:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Optimizar Consulta

No es tan simple como siempre poner la tabla "más grande" o "más chica" antes o después. Es importante determinar la selectividad, en base las condiciones que pones en el WHERE y el ON.
Si la tabla T2 es más chica, pero además el WHERE aplica sobre un campo PK, como parece, la selectividad de esa consulta es enorme, ya que esa condición devolvería un único registro, y el INNER JOIN filtraría contra un único valor.
Lo que te conviene es profundizar el estudio de la optimización de consultas desde el ángulo del Álgebra Booleana aplicada a las BBDD.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/07/2015, 17:42
 
Fecha de Ingreso: julio-2015
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Optimizar Consulta

Estimado Guillermo
Ante todo lo quiero agradecer.
Y siguiendo con el tema le quería consultar si hay otros parámetros que tengo que tener en cuenta a la hora de evaluar la consulta a parte de los tres ante mencionados.

Nuevamente lo agradezco
Alexei Bykovski
  #4 (permalink)  
Antiguo 07/07/2015, 18:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Optimizar Consulta

¿Guillermo?



Si es por la frase de la firma, es de un amigo mío, pero yo no me llamo así...

Por lo demás, hay muchas cosas que pueden modificar la performance de una consulta, por lo que usualmente hay que analizar cada caso. La misma solución a dos casos en apariencia idénticos puede ser completamente diferente para cada uno.

La experiencia es lo único que enseña, pero tener un conocimiento profundo teórico de BBDD, ayuda mucho.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/07/2015, 05:13
 
Fecha de Ingreso: julio-2015
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Optimizar Consulta

Le pido disculpas por mi torpeza con el Nombre y lo quiero agradecer por ayuda brindada.

Sin otro particular.
Saludo atte.,

Etiquetas: joins, querys
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:28.