Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-03-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Hola a todos,
el tipo de consultas que propone Caro creo que no aparece en ningún manual. Sí aparece algo en la ayuda de Firebird , no recuerdo como lo llama ( tablas derivadas creo).
Ahora bien, estas consultas son TERRIBLEMENTE funcionales, y generalmente TERRIBLEMENTE inificientes en cuanto a velocidad de respuesta, ya que exprimen al motor de base de datos a tope ya que no son 'naturales'. Esto quiere decir que no se utilizan índices ni nada parecido ( generalmente ) y lo que hace el motor es generar una tabla temporal recorriendose las tablas que intervienen de cabo a rabo.
Para confirmarlo es conveniente mirar el plan de ejecución, y además es conveniente medir si es mejor ahorrarse un procedimiento almacenado que cuajar el servidor unos segundos. Sobre todo cuando nuestra base de datos tiene muchos registros.

Casimiro, tus aplicaciones de tropecientos gigas que sueles comentar funcionan estupendamente tanto tiempo y con esos volúmenes porque no conoces estas consultas enrevesadas.
Y que conste, que a mi me gustan , ya que como Caro, me reto a ver si se puede hacer en una sola consulta o no.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #2  
Antiguo 26-03-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.676
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Tienes razón, en parte, porque si el servidor es linux y tienes más de una cpu, cuando lanzas la consulta ocupa una de las cpu, pero las demás siguen libres para seguir antendiendo a los restantes usuarios.

He hecho una prueba con una pequeñita, poco más 500 Mb. y efectivamente el primer select lo recorre entero "natural", aunque de todas formas, el tiempo requerido ha sido 1 segundo.

Cita:
Prepare time: 00:00:00.
Field #01: .CLIENTE Alias:CLIENTE Type:INTEGER
Field #02: .TOTAL Alias:TOTAL Type: DOUBLE PRECISION
PLAN (TBCABECERASFACTURASVENTAS NATURAL)
PLAN (TBCABECERASFACTURASVENTAS ORDER INDCABFACVEN_CLIENTECODIGO)


Executing...
Done.
317488 fetches, 0 marks, 0 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 62675 index, 62631 seq.
Delta memory: 1184 bytes.
Execute time: 00:00:01.
Script execution finished.
Con otra tabla que tiene más registros (1279329), 2 segundos:
Cita:
Prepare time: 00:00:00.
Field #01: .CODIGOPEDIDO Alias:CODIGOPEDIDO Type:INTEGER
Field #02: .PRECIO Alias:PRECIO Type: DOUBLE PRECISION
PLAN (TBLINEASALBARANESVENTAS NATURAL)
PLAN (TBLINEASALBARANESVENTAS ORDER RDB$FOREIGN3)


Executing...
Done.
1279329 fetches, 0 marks, 10697 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 253736 index, 253720 seq.
Delta memory: 1192 bytes.
Execute time: 00:00:02.
Script execution finished.
La prueba la he hecho en mi ordenador personal, ubuntu 8.04 con firebird 2.1 y un AMD athlon 64 x2 dual 4600 con 2 Gb

Última edición por Casimiro Noteví fecha: 26-03-2010 a las 22:37:54.
Responder Con Cita
  #3  
Antiguo 26-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 20
rgstuamigo Va por buen camino
Arrow

Solo comentar que la consulta correcta debería ser con una Union All ya que en realidad segun el requerimiento de Jucho69 es que por cada cliente salga cada importe efectuado más (+) la suma de todos los importe, lo cual significa que la cantidad de registro(tuplas)devueltas en la consulta general deben ser :
Cita:
Total registros=Cantidad de registro de la primera sub_consulta + Cantidad de registro de la segunda sub_consulta
Quedando la consulta SQL así:
Código SQL [-]
(Select Cliente, Importe From Tabla)   #<-Primera sub_consulta
Union All
(Select Cliente, sum(Importe) as Importe From Tabla Group By Cliente)    #<-Segunda sub_consulta
Order By Cliente,Importe
Quizás los parentesis estan demás pero creo que es mejor ponerlo para una mejor comprensión de lo que se está haciendo..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 29-03-2010 a las 20:54:37.
Responder Con Cita
  #4  
Antiguo 27-03-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.676
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
De esa forma ha sido más rápido incluso, de 2 segundos a 1 seg.
Cita:
Prepare time: 00:00:00.
Field #01: .CODIGOPEDIDO Alias:CODIGOPEDIDO Type:INTEGER
Field #02: .PRECIO Alias:PRECIO Type: DOUBLE PRECISION
PLAN (TBLINEASALBARANESVENTAS NATURAL)
PLAN (TBLINEASALBARANESVENTAS ORDER RDB$FOREIGN3)


Executing...
Done.
1279329 fetches, 0 marks, 10697 reads, 0 writes.
0 inserts, 0 updates, 0 deletes, 253736 index, 253720 seq.
Delta memory: 1192 bytes.
Execute time: 00:00:01.
Script execution finished.
Responder Con Cita
  #5  
Antiguo 29-03-2010
Jucho69 Jucho69 is offline
Miembro
 
Registrado: ene 2007
Ubicación: Ciudad Habana, Cuba
Posts: 118
Poder: 20
Jucho69 Va por buen camino
Smile

Hola

Gracias a todos por la ayuda, muy atento rgstuamigo, ya creo que contigo habia visto algo parecido, con Union All se pueden enlazar varias consultas previas incluso desde la propia base de datos.

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Subtotales de Excel adfa76 Servers 1 11-06-2007 17:05:24
subtotales en un grid federicorl OOP 4 10-12-2006 20:34:32
Subtotales al comienzo yusnerqui Varios 6 08-06-2006 16:02:20
Subtotales en Excel tutuk Servers 4 04-06-2005 00:56:58
Subtotales en QuickReport raugadel Impresión 3 12-05-2004 16:13:49


La franja horaria es GMT +2. Ahora son las 09:23:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi