Consulta a base de datos

14/05/2005 - 21:02 por Juan | Informe spam
Hola a todos
estoy realizando una consulta a una base de datos ACCESS

El string de consulta posee es para hacer la consulta
sobre 7 tablas

Luego cargare cada tabla en un dataset.

El problema es que cuando se va a cargar cada tabla al
dataset el proceso se hace muy lento

la consulta sobre 3 tablas fue bueno, pero luego el
larguisimo el tiempo

Tengo lo siguiente
strSQL="Select * from T1,T2,T3,T4,T5,T6,T7"

Porque se da este fenòmeno

Como puedo resolver este proceso de tiempos

Necesito ese string ya que tambien hay un Where

Que alternativas me dan?

Chao

Preguntas similare

Leer las respuestas

#1 A.Poblacion
15/05/2005 - 10:11 | Informe spam
"Juan" wrote in message
news:0a4601c558b7$72cf87f0$
El problema es que cuando se va a cargar cada tabla al
dataset el proceso se hace muy lento
[...] Tengo lo siguiente
strSQL="Select * from T1,T2,T3,T4,T5,T6,T7"



Esa consulta hace el producto cartesiano de los registros de todas las
tablas. Es decir, que si cada tabla tiene 10 registros, la consulta genera
10*10*10*10*10*10*10 registros (todas las combinaciones posibles, 10
millones en total), cuando presumiblemente lo que tú deseas es cargar las
tablas por separado, es decir 70 registros si cada una tuviera 10.

Haz un "Select * from T1", despues un "Select * from T2", etc.
Respuesta Responder a este mensaje
#2 Julio Casal
15/05/2005 - 18:23 | Informe spam
Qué tal Juan. Mira, toma en cuenta que aquel SELECT que estás haciendo
generará un producto cartesiano entre las 7 tablas. Es decir, es la
multiplicación de lo que tienes en la tabla 1 x tabla 2 x tabla 3 x . x
tabla 7. Es mucha informacion repetida, amigo y no es comun hacer un SELECT
asi. Te recomiendo revises el SELECT y, en tal caso, trae únicamente los
campos que necesites de cada tabla, nunca uses un *, eso es una muy mala
práctica.

Saludos.

Julio Casal
Developer Senior .Net
MCP
SmartWork


"Juan" wrote:

Hola a todos
estoy realizando una consulta a una base de datos ACCESS

El string de consulta posee es para hacer la consulta
sobre 7 tablas

Luego cargare cada tabla en un dataset.

El problema es que cuando se va a cargar cada tabla al
dataset el proceso se hace muy lento

la consulta sobre 3 tablas fue bueno, pero luego el
larguisimo el tiempo

Tengo lo siguiente
strSQL="Select * from T1,T2,T3,T4,T5,T6,T7"

Porque se da este fenòmeno

Como puedo resolver este proceso de tiempos

Necesito ese string ya que tambien hay un Where

Que alternativas me dan?

Chao

Respuesta Responder a este mensaje
#3 Tristan
15/05/2005 - 18:34 | Informe spam
Y añadido a lo que tan dicho, ten en cuenta que un DataSet es una tabla
guardada en memoria, en el equipo cliente. NO es una buena práctica cargar
datasets enormes. Si necesitas trabajar con tablas muy grandes, no utilices
DataSet, utiliza el modo conectado (DataReader). En general la idea cuando
se trabaja con datasets, es seleecionar un número relativamente reducido de
filas para cargar en él.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Alfredo Novoa
15/05/2005 - 22:12 | Informe spam
Hola

On Sun, 15 May 2005 10:11:39 +0200, "A.Poblacion"
wrote:

strSQL="Select * from T1,T2,T3,T4,T5,T6,T7"



Esa consulta hace el producto cartesiano de los registros de todas las
tablas. Es decir, que si cada tabla tiene 10 registros, la consulta genera
10*10*10*10*10*10*10 registros (todas las combinaciones posibles, 10
millones en total), cuando presumiblemente lo que tú deseas es cargar las
tablas por separado, es decir 70 registros si cada una tuviera 10.

Haz un "Select * from T1", despues un "Select * from T2", etc.



Para hacerlo en una consulta sería:

select * from T1 union select * from T2 union ...


De todas formas hay muchísimas posibilidades de que las tablas estén
mal diseñadas.


Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida