Como se ejecuta realmente una consulta...

21/11/2003 - 13:19 por Tolo | Informe spam
hola,

Vereis, a ver si aclaramos esto...

una pregunta que me hago está en saber cual de estas dos consultas se
ejecuta antes...

A) select sum(importe) as total from facturas group by id_factura

B) select sum(importe) as total from facturas where id_factura = 92832 group
by id_factura

Pues por lo q yo tengo entendido, deberían tardar lo mismo, pues es SGBD lo
que hace es crear la consulta, y luego sobre ella aplicar los filtros
definidos (where)

como lo veis vosotros??????????????????????????

Claro probar esto, puede ser complejo y solo cabría verlo montando una macro
BD, no?
 

Leer las respuestas

#1 Javier Loria
21/11/2003 - 19:31 | Informe spam
Hola Tolo:
Creo que asumes que el SQL es medio tonto!!!.
Si te mando a la tienda a comprar un listas de 40,000 articulos no te
vas directo, sino que previamente contratas un camion compras lo necesario,
lo cargas en el camion y luego lo traes. Si te mando a comprar 1 libra de
arroz, vas directo y lo traes.
El servidor de SQL no difiere mucho de tu forma de pensar antes de hacer
tu SELECT va a las "Estadisticas" y revisa cuantas filas va a encontrar. En
el primer caso se encuentra que son miles y toma las medidas necesarias
(podria ser que utilice una Tabla Hash en TempDb, o algo medio loco) y lo
resuelve.
Si encuentra que solo son un grupo pequeno, va las lee en memoria RAM
las agrupa y te la devuelve.
A este proceso de seleccion de alternativas y evaluacion del costo se le
llama "Query Optimizer".
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Tolo escribio:
hola,

Vereis, a ver si aclaramos esto...

una pregunta que me hago está en saber cual de estas dos consultas se
ejecuta antes...

A) select sum(importe) as total from facturas group by id_factura

B) select sum(importe) as total from facturas where id_factura > 92832 group by id_factura

Pues por lo q yo tengo entendido, deberían tardar lo mismo, pues es
SGBD lo que hace es crear la consulta, y luego sobre ella aplicar los
filtros definidos (where)

como lo veis vosotros??????????????????????????

Claro probar esto, puede ser complejo y solo cabría verlo montando
una macro BD, no?

Preguntas similares