Hola Estela Primero, no uses do while sino scan. El scan - endscan es mucho más eficiente por las siguientes razones:
a) se evita el skip porque el endscan hace un skip implícito b) lo que es más importante, el scan permite usar la clausula FOR y si hacés las cosas siguiendo las reglas del Rushmore, vas a tener una mayor eficiencia Segundo, un select, como bien dijo Davo, hace que el "laburo" lo haga el motor (en caso de usar el SQL Server, MySQL o demás). Y si las sentencias WHERE están optimizadas por Rushmore, mejor todavia. No te olvides que si usás seek, etc. lo que estás haciendo es traerte toda la tabla y todos los índices, mientras que con un select, solamente traés el resultado del query. El tráfico en la red mejora notablemente. En cuanto a la optimización en sí, deberías dejar de usar índices compuestos. Usá mejor índices de clave única o simple, como fecha, cuenta, número de factura, etc. y combiná las cosas de manera de sacar la mayor ventaja posible de dichos índices. Cuando vas a efectuar una consulta SELECT o un SCAN con cláusula FOR, acordate de poner en cero los índices de cada tabla interviniente, antes de efectuar la consulta, como en este ejemplo: dFechaInicial = gomonth(date(),-5) dFechaFinal = date() set order to 0 in clientes set order to 0 in facturas select facturas.cuenta,clientes.empresa,facturas.fecha,facturas.importe from facturas left outer join clientes on facturas.cuenta = clientes.cuenta ; where facturas fecha between dFechaInicial and dFechaFinal into cursor curFacturas order by facturas.fecha,facturas.numero Se supone que la tabla CLIENTES tiene un índice por cuenta y la tabla FACTURAS tiene un índice por cuenta, otro por fecha y otro por número. Otra cosa, en lugar de vistas, podés usar Cursor Adapters para hacer las consultas (pero eso es desde el VFP 8 en adelante). Los demás puntos de tu pregunta, respecto de la VPN y el ER con el problema de las impresoras, se lo dejo a otros co-listeros. Rafael Copquin ----- Original Message ----- From: Estela Lázaro To: GUFA List Member Sent: Thursday, April 24, 2008 11:25 AM Subject: [spam] [GUFA] SQL o qué? Hola gente Tengo una aplicación en VFP7 que en redes locales anda sin problemas. Y resulta que ahora un cliente necesita acceder desde otros puntos para lo que en una máquina con win 2003 que oficia de servidor se armó un acceso por vpn y un escritorio remoto. El ER anda muy bien y a la velocidad del server, con exes en el remoto pero tienen problemas para imprimir y scanear (a las impresoras no las reconoce el win2003) por lo que lo imprimen en PDF y scanean con un pequeño exe local que les hice mapeado por VPN. Pero esto último es muy lento, lo del pdf y el acceso a las tablas por vpn (y eso que saqué casi todos los select para agilizar). En su momento dejé de lado los select pues me resultan más rápidos los seek y do while. Probé la aplicación completa local mapeada por VPN por el tema de las printers y es tremendamente lento. Por lo que me parece que debería migrar al SQL (no sé cuál, el SQL Server, el MySql) que me significaría volver a los sqlexec y/o vistas parametrizadas, no? Otra alternativa? Voy a tener más trabajo por mantenimiento/administración de archivos por el SQL? Bue, qué me sugieren? Muchas Gracias Estela ------------------------------------------------------------------------------ Los referentes más importantes en compra/venta de autos se juntaron: Demotores y Yahoo!. Ahora comprar o vender tu auto es más fácil. Visitá http://ar.autos.yahoo.com/ __________ Información de NOD32, revisión 3052 (20080424) __________ Este mensaje ha sido analizado con NOD32 antivirus system http://www.nod32.com
