Te agradezco lo de sabios comentarios aunque no soy tan sabio.
En el caso de VFP, no te lo puedo asegurar, pero si usaras SQL Server
como back end la respuesta es muy clara: creas un stored procedure en el
servidor y eso si, con seguridad, te trae solamente los registros
necesarios.
En el caso de VFP deberías hacer algo así (para probar la performance):
use tabladelservidordelaredlocal
select top 10............. into cursorlocal
use in tabladelservidordelaredlocal
select cursorlocal
De esa manera abrís brevemente la tabla de la red (mientras se hace la
consulta a un cursor local) y la cerrás inmediatamente. No estoy muy
seguro de si al abrir la tabla estás trayendo todos los registros (creo
que no), pero al conectar y desconectar le hacés al servidor un "touch
and go"
Probalo y medi la performance contra lo que tenés ahora. De todos modos,
con el ejemplo de paginación que publiqué en ese artículo podés hacer
las consultas mucho más eficientes.
Además, la consulta la podés hacer usando un cursoradapter, lo que te
permite modificar el o los registros de la tabla que estás trayendo, con
solamente mandarle un tableupdate.
Rafael Copquin
El 30/07/2012 11:31 a.m., Walter Ferrero escribió:
Rafael, buen día y muchas gracias por estar dispuesto a dar una mano
como siempre! Entiendo el concepto de paginación, pero creo que en
algún momento leí por algún lado que Visual Fox resuelve siempre las
consultas localmente. Es decir, en el caso de la cláusula TOP, ¿no
trae primero TODO el conjunto de datos de la tabla y después aplica
localmente el filtro? Te consulto porque si así fuera no voy a
resolver el problema de rendimiento o uso de la red que tengo
actualmente. Muchas gracias nuevamente, y quedo al aguardo de tus
sabios comentarios. Saludos,
Walter
*De:*[email protected] [mailto:[email protected]] *En nombre de *Rafael
Copquin
*Enviado el:* lunes, 30 de julio de 2012 10:49 a.m.
*Para:* GUFA List Member
*Asunto:* [GUFA] Opciones para manejo de tablas gigantes
Lo que tenés que hacer es usar paginación, o sea, traer a la pantalla
solamente la cantidad de artículos que necesitás ver. Eso lo hacés con
comandos select apropiados que usan la cláusula TOP.
Este artículo que escribí hace un tiempo te dice cómo hacer
precisamente eso. Está en inglés porque, como lo expliqué el otro día,
la revista dejó de publicar artículos sobre Visual FoxPro, pero dejó
los que tenía solamente en su versión en inglés.
http://www.universalthread.com/ViewPageArticle.aspx?ID=847
Saludos
Rafael Copquin
El 29/07/2012 10:07 p.m., Walter Ferrero escribió:
Amigos, hace un buen rato que no paso por acá... pero me veo en un
callejón sin salida y necesito recurrir a vuestra experiencia. El
tema es el siguiente: tengo en un cliente un sistema de gestión
con la tabla de artículos con gran cantidad de datos, y al
ejecutar el sistema en red (son 8 puestos de trabajo + 1 server
dedicado con la Base de Datos) tarda bastante cuando interviene la
tabla de artículos en algún formulario. Mi pregunta es qué
estrategia podría utilizar para no mover la totalidad de los datos
por la red cuando utilizo esta tabla. ¿Sería posible resolverlo
con cursoradapter o existe una solución mejor? Desde ya muchas
gracias por su tiempo. Saludos,
Walter Ferrero
Socio MUG 1696