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


Responder a