Power Builder - S.O.S. Levantamiento de Data

 
Vista:

S.O.S. Levantamiento de Data

Publicado por Julio César (1 intervención) el 27/04/2004 15:54:23
Hola a todos, uso PB 8.0 con MSQL SERVER 2000, tengo una cantidad grande de registros ya migrados a MSQL SERVER 2000, pero mi problema es que cuando levanto todo esa informacion en un datawindow o hago una consulta, las PC se cuelgan o demoran cantidad de tiempo en responder, creo que debe ser por lo mismo que subo toda la data y me faltaria RAM (tengo 128); motivo por el cual no puedo hacer una búsqueda flotante; es decir difitar la letra "C" y me empezarán a aparecer en un datawindow todos los nombres que comienzen con "C". Por ahi me han dicho que no use datawindow, que es mejor que use otros controles, pero no me dicen cual. Otros dicen que en la BD debo usar indexación.

Por favor denme una opinión o consejo.

De antemano muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:S.O.S. Levantamiento de Data

Publicado por Carlos Gil (124 intervenciones) el 27/04/2004 16:29:11
Hola, supongo que tu búsqueda se basa en uno de los campos de la tabla en mención y no en la primary key. Entonces lo primero que tienes que hacer es indexar ese campo, esto es para dar velocidad a las consultas.

Es importante también crear un procedimiento almacenado (SP por sus siglas en ingles) para realizar la consulta y que tu DW este basado en este SP. Aqui te mando un ejemplo de SP:

CREATE PROCEDURE sp_buscaprov @nomprov varchar(100) AS

declare @var1 varchar(102)
--Al agregar el comodin '%' al final de la cadena a buscar nos recupera
--todos los registros que inicien con la cadena parametro
set @var1=@nomprov + '%'
select key_pro,nombre_pro,ruc_pro from proveedores
where activo_pro='s' and nombre_pro like @var1
GO


Suerte, nos vemos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:S.O.S. Levantamiento de Data

Publicado por Carlos Gil (124 intervenciones) el 27/04/2004 16:29:19
Hola, supongo que tu búsqueda se basa en uno de los campos de la tabla en mención y no en la primary key. Entonces lo primero que tienes que hacer es indexar ese campo, esto es para dar velocidad a las consultas.

Es importante también crear un procedimiento almacenado (SP por sus siglas en ingles) para realizar la consulta y que tu DW este basado en este SP. Aqui te mando un ejemplo de SP:

CREATE PROCEDURE sp_buscaprov @nomprov varchar(100) AS

declare @var1 varchar(102)
--Al agregar el comodin '%' al final de la cadena a buscar nos recupera
--todos los registros que inicien con la cadena parametro
set @var1=@nomprov + '%'
select key_pro,nombre_pro,ruc_pro from proveedores
where activo_pro='s' and nombre_pro like @var1
GO


Suerte, nos vemos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:S.O.S. Levantamiento de Data

Publicado por Ricardo (1957 intervenciones) el 27/04/2004 16:33:11
Hola que tal:

Te envio un ejemplo a tu cuenta , talvez te sirva o por lo menos te de una idea.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:S.O.S. Levantamiento de Data

Publicado por Mateus (16 intervenciones) el 27/04/2004 17:48:39
Verifica si necesitas indices en tu consulta, para esto copia el sql del datawindow, el en analizador de consultas de SQL, teclea Ctrl + L el analizador te generará el plan de ejecucion y si aparece algun objeto llamado "table scan" significará que necesitas un indice, para saber en que tabla pasa el mouse sobre este objeto y te dira donde.

Espero te sirva..

Saludos desde Colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:S.O.S. Levantamiento de Data

Publicado por Oscar (1178 intervenciones) el 27/04/2004 21:21:56
Las reglas para reducir tu tiempo de carga son:
* Uso de WHERE vs. FILTRO de DW.
La clásula WHERE selecciona sólo las filas que desde la BD se quieren enviar de vuelta al cliente. El uso de esta cláusula reducirá el tamaño del conjunto de resultados y así se reduce también la cantidad de datos que hay que enviar a través de la red para que se pongan en el buffer del DW; mientras que utilizando un FILTRO de DW, te llevas inútilmente toda la data al cliente y allí, es cierto que se filtrará el resultado; pero el filtro lo único que hace es mostrar algunas filas y ocultar otras.

* Cuando realizas la "busqueda flotante", como tú llamas, estoy seguro que estas usando un filtro con el consiguiente problema mencionado. Además, recuerda que ese tipo de búsqueda no es ideal cuando se trabaja con una gran cantidad de datos. No gustaría saber, esa "cantidad grande", que mencionas, exáctamente a cuantos registros corresponde.

* Uso de índices:
Los índices son buenos para mejorar el rendimiento al ordenar los datos; pero son malos cuando se trata de actualizarlos. En tu caso, es cierto que necesitas un índice por el campo que realizas la búsqueda.

En resumen, como dice Carlos, debes crear SP en tus consultas. De esa manera la ejecucion será siempre más RAPIDA; si aún así, no mejora, ver los aspectos de hardware (¿procesador?, ¿aumentar memoria?).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar