FoxPro/Visual FoxPro - Cómo NO traer todos los registros con Select * fro

 
Vista:
sin imagen de perfil

Cómo NO traer todos los registros con Select * fro

Publicado por guillermo arias (294 intervenciones) el 28/01/2007 00:47:50
Hola gente, les saluda Guillermo, de Perú.
Quisiera que me den algunas sugerencias. Explico la situación:

Estoy usando BD Postgre + VFP. Incialmente pensé en utilizar una BD .dbc + vistas remotas , pero mi app no va a poder trabajar de esa manera pues estoy usando "schemas" del postgre que es como pequeñas BD dentro de una misma BD.

Por eso pensé en crear yo mismo mis vistas remotas "manuales" , es decir Cursores actualizables mediante código, funcionan muy bien. Consiste en:

1- Cargo el cursor desde la BD con SQLEXEC(lc_conex,"SELECT * FROM MITABLA","MICURSOR")
2- Una serie de pasos con CURSORSETPROP para que el cursor sea actualizable y envíe data hacia la BD.

Como te darás cuenta mi problema está en el paso 1. He leído que existe :
- Una sentencia SQLSETPROP que con parámetro de conexión 0 puede setear x defecto la forma en que se comunicarán las sentencias SQLEXEC con la BD.
- También puedo usar CURSORSETPROP con parámetro nWorkArea= 0 para establecer x defecto la forma de trabajo de los cursores.

Entonces esto me da hace pensar que podría gobernar la forma de funcionamiento de los cursores que traigo con SQLEXEC desde la BD, y no traer todos los 100,000 registros de una vez.

Agradeceré cualquier comentario.

bye
_____________________________________
Guillermo Arias (51 1) 9843 6047 - 522 2199
Lima - Perú
[email protected]
[email protected]
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:Cómo NO traer todos los registros con Select *

Publicado por Roman Suazo (2723 intervenciones) el 28/01/2007 06:58:12
Para traer un cursor vacio del servidor solo tienes que crear una consulta que no traiga nada, como:

Selec * from mitabla where id=-1

En este caso asumo que el campo id solo tiene valores mayores o iguales a uno.

Hay tecnicas que hacen esto mas rapido, pero no se si trabajan en la base de datos que usas. Por ejemplo, en sql server esto funciona rapido y es eficiente.

Selec * from mitabla where where (0=1)

A lo mejor funciona bien en tu base de datos, de lo contrario tendrias que preguntar en el foro correspondiente a tu base de datos el truquito.

Saludos
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
sin imagen de perfil

RE:Cómo NO traer todos los registros con Select *

Publicado por guillermo arias (294 intervenciones) el 01/02/2007 19:02:16
Hola gracias por responder.

Yo trabajo con postgre, tengo una tabla con 4 millones de registros y demora mucho para cargar la vista a través de SPT y con remote views demora el doble.

Si traigo un cursor a través de SPT con 0 registros, ¿de qué me serviría? ¿podría ir cargando más registros después?

Gracias
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:Cómo NO traer todos los registros con Select *

Publicado por Roman Suazo (2723 intervenciones) el 28/01/2007 18:34:43
*Como te darás cuenta mi problema está en el paso 1. He leído que existe :
*- Una sentencia SQLSETPROP que con parámetro de conexión 0 puede setear x *defecto la forma en que se comunicarán las sentencias SQLEXEC con la BD.
*- También puedo usar CURSORSETPROP con parámetro nWorkArea= 0 para *establecer x defecto la forma de trabajo de los cursores.

*Entonces esto me da hace pensar que podría gobernar la forma de *funcionamiento de los cursores que traigo con SQLEXEC desde la BD, y no traer *todos los 100,000 registros de una vez.

A esa tecnica o tecnologia se le llama SQL-Passthrou. En la ayuda del VFP podras encontrar mas informacion al respecto. Definitivamente, te recomiendo usar esta tecnica ya que es mas flexible en cuanto a las consultas y te proporciona la capacidad de manejar las transacciones mas facilmente. Ademas se adapta mejor a ciertos paradigmas de la programacion, etc. Las vistas las recomiendo por su sencillez de uso, pero es mejor solo usarlas con bases nativas.
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