Christof se refiere a inconvenientes en la optimización de consultas y el tráfico de información.
Lentitud óptima
Artículo original: Optimal slow
http://www.foxpert.com/knowlbits_200705_3.htm
Autor: Christof Wollenhaupt (http://www.foxpert.com/knowlbits.htm)
Traducido por: Ana María Bisbé York (amby@telefonica.net)
Para: PortalFox (http://www.portalfox.com)
La optimización de consultas en Visual FoxPro generalmente está relacionada al incremento de la velocidad. Hace unos años, estuvimos viendo una discusión sobre un índice basado en DELETE() que no es una regla universal. Optimizar consultas puede ser un poco más complicado. He aquí una situación sobre la que hay que pensar. Usted tiene dos tablas A y B. La consulta devuelve todos los registros de la tabla A y la mitad de los registros de B:
SELECT * FROM A ;
JOIN B ON A.PK = B.FK ;
WHERE AlgunaCondición.
AlgunaCondición no está optimizado. Por tanto piense que optimizar la consulta creando los índices necesarios. ¡ Felicidades ! Redujo exitosamente la cantidad de datos que tiene que transferir a través de la red, y al mismo tiempo, demorado la consulta.
Lo que al inicio parece ser una contradicción se puede explicar fácilmente. Cuando Visual FoxPro lee los registros en un lazo, nunca lee registros aislados, lee un bloque de registros. En el primer caso, Visual FoxPro tiene que buscar de forma secuencial a través de la tabla B como una docena de registros con cada operación de lectura.
Cuando usted optimiza la consulta, Visual FoxPro crea un mapa de aciertos. Si hay un fallo en una docena de éxitos, Visual FoxPro tiene que partir una única petición de lectura de 12 registros en dos peticiones de lectura de cinco y seis registros. Cuantos más registros filtre, tendrá que leer más fragmentos. Al final, puede tener solamente el 50 % de los registros; pero necesita 600% más de operaciones de lectura para obtenerlos.
Las operaciones de lectura a través de la red son caras. Estas operaciones frecuentemente hacen corresponder con un único bloque de información de la red. Cada bloque adicional añade costos por encabezados de protocolo, añade demoras debido a la latencia de la red y añade carga de trabajo a la red para enrutar y filtrar los bloques. ¡ Felicidades !
|