Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema al Agrupar BD

Estas en el tema de Problema al Agrupar BD en el foro de Programación General en Foros del Web. Tengo una agrupacion a una base de datos de 43,000 registros y tarda cerca de 40 segundos en regresarme una agrupacion por dos campos. Estoy ...
  #1 (permalink)  
Antiguo 23/02/2004, 16:23
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Problema al Agrupar BD

Tengo una agrupacion a una base de datos de 43,000 registros y tarda cerca de 40 segundos en regresarme una agrupacion por dos campos.

Estoy generando en VBasic un QueryDef primeramente con mi consulta:

Set QDF = glbBaseDeDatosAsignada.CreateQueryDef("QueryGroupR eport", CadSql)
QDF.Close

Para despues crear un Shape y que me regrese los registros agrupados:

AdoRst.Open ("SHAPE {SELECT * FROM QueryGroupReport} AS Command1 COMPUTE Command1 BY " & Camp12), Cnn, adUseClient, adLockReadOnly

Donde QueryGroupReport con tiene la cadena "SELECT campos FROM tabla", Cnn es mi conexion y Camp12 contiene el o los campos por los que voy a agrupar

Trate tambien de hacer la agrupacion utilizando la instruccion GROUP BY pero me marca errores.. por ejemplo

Si utilizo el siguiente codigo


Cade = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\Base 3 campos.mdb"
CnnEjemplo.ConnectionString = Cade
CnnEjemplo.Open

With RstEjemplo
.ActiveConnection = CnnEjemplo
.CursorLocation = adUseClient
.LockType = adLockReadOnly
End With

RstEjemplo.Open "Select Indice, Empresa, RubPrincipal from Totales GROUP BY RubPrincipal"


Me marca que "Ha intentado ejecutar una consulta que no incluye la expresion especificada 'Indice' como una parte de una funcion de agregado"


Ojala me pudieran ayudar para saber como acelerar el tiempo que tardan en generarse mis agrupaciones (tomando en cuenta que puede ser cualquier base de datos por lo cual no podria generar ningun tipo de indice)

Muchas gracias por sus amables respuestas.
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #2 (permalink)  
Antiguo 24/02/2004, 13:19
 
Fecha de Ingreso: septiembre-2003
Mensajes: 172
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola, no te se ayudar respecto a lo de mejorar el rendimiento pq no entiendo muy bien lo del shape etc. Lo que te puedo decir es que cuando haces un Group By en SQL , los campos devueltos deven ser expresiones de grupo, como por ejemplo max(campo1) o tienes que agrupar todos los campos teniendo en cuenta que el primero que salga es el que se agrupa primero. Por ejemplo:

Select Indice, Empresa, RubPrincipal from Totales GROUP BY RubPrincipal,Empresa,Indice

Esto te agruparia los registros primero por RubPrincipal, luego por empresa y luego por indice.

Es todo cuanto puedo decirte. Saludos!
__________________
Sr.Propio
  #3 (permalink)  
Antiguo 27/02/2004, 01:08
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Muchas gracias por su ayuda, he resuelto el problema que tenia.

Hasta pronto
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
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 14:29.