FoxPro/Visual FoxPro - Delete sql vfp9 sp2

 
Vista:

Delete sql vfp9 sp2

Publicado por Julio (20 intervenciones) el 17/03/2009 15:34:49
Buenas, tengo una rutina que desarrolle en visual foxpro 8 hace un par de años, en la que elimino de una tabla que tiene unos 50000 registros en función de una clave resultante de otra tabla, esta segunda genera unos 35000 registros que serán las claves a eliminar de la primera, simplemente la sentencia que tengo es la siguiente:

DELETE FROM datos!gastos WHERE dempid=0 AND "X"+ALLTRIM(cuendt)+"X"+ALLTRIM(cauxdt)+"X"+ALLTRIM(STR(montdt,20,6))+"X" IN (SELECT "X"+ALLTRIM(cuendt)+"X"+ALLTRIM(cauxdt)+"X"+ALLTRIM(STR(montdt,20,6))+"X" DISTINC FROM especiales!originales_productos)

Esta sentencia en visual 7 u 8 demora aproximadamente 7 segundos para marcar los registros a borrar, ahora cuando ejecuto en vfp9 la misma sentencia y con el mismo conjunto de datos demora 1 hora 20 minutos.

Alguien me puede orientar en cual es el problema y si tiene solución, de más está decir que se puede realizar una rutina para hacer lo mismo con un par de comandos propios de vfp, lo que me interesa conocer cual es el problema del cambio de rendimiento entre una versión y otra y si hay algún parámetro que estoy dejando de lado y hay que incluirlo con los comandos SQL?

Gracias, saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Delete sql vfp9 sp2

Publicado por Douglas (297 intervenciones) el 18/03/2009 01:08:39
Hola, antes de ejecutar tus consultas proba esto SET ENGINEBEHAVIOR 70 despues que ejecutes tus commandos volves a SET ENGINEBEHAVIOR 80 o 90 vfp8 o vfp9

Aunque lo mas provable es que no tengas optimizada tus tablas algunos concejos.

Los campos que se recomiendan indexar son:
Claves Primarias
Claves Foráneas
Campos por los cuales se realizaran búsquedas
Campos por los cuales se va a ordenar

saludes

Douglas
from Nicaragua
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Delete sql vfp9 sp2

Publicado por Julio (20 intervenciones) el 18/03/2009 12:03:27
Gracias por tu colaboración, en realidad no cambio en nada con el cambio de este parámetro, logré nuevamente realizar la operación en unos 7 segundos desdoblando el trabajo, primero genero un cursor con las claves a borrar y luego efectuó el borrado, de está manera mantiene la performance que tenía con el visual 8

SELECT "X"+ALLTRIM(cuendt)+"X"+ALLTRIM(cauxdt)+"X"+ALLTRIM(STR(montdt,20,6))+"X" DISTINC FROM especiales!originales_productos INTO CURSOR TEMP_ORIGINALES_PRODUCTOS

DELETE FROM datos!gastos WHERE dempid=0 AND "X"+ALLTRIM(cuendt)+"X"+ALLTRIM(cauxdt)+"X"+ALLTRIM(STR(montdt,20,6))+"X" IN (SELECT * FROM TEMP_ORIGINALES_PRODUCTOS)

No me gusta pero funciona, Gracias, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar