Ok!!!! Sigo! Gracias!

----- Mensaje original ----
De: Rafael Copquin <[EMAIL PROTECTED]>
Para: GUFA List Member <[email protected]>
Enviado: jueves 24 de abril de 2008, 17:03:54
Asunto: [GUFA] Re: [spam] [GUFA] SQL o qué?


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



      Tarjeta de crédito Yahoo! de Banco Supervielle.
Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa. 
www.tuprimeratarjeta.com.ar 

Responder a