Para tablas, si no se cambian mucho (sean grandes o chicas), lo mejor es copiar 
local y acceder localmente.Evitas cargar la red (primer cuello de botella) y no 
hay necesidad de compartir, por lo que solo tienes que poner un testigo 
accesible en el servidor para que desde los clientes pueda consultarse 
periódicamente y si una de las tablas estáticas cambió, disparas un proceso de 
actualización a donde corresponda (podes copiar desde dentro del mismo fox).Si 
accedes con seek y found, tendrás un esquema más o menos como:
lnAreaPrevia = SELECT(0) && guardas donde estabasSELECT 
tablaDondeBuscaslnOrdenPrevio = ORDER() && guardas que orden tenía la tabla 
donde buscarasSET ORDER TO TAG xDondeBuscasSEEK tuValorClaveIF FOUND()   * 
transferencia de datos, procesos asociados, lo que se necesiteELSE   * 
procedimiento que no encontrado, blanqueo de campos o mensajes, lo que 
deENDIFSET ORDER TO lnOrdenPrevio && dejas la tabla accedida con el orden que 
teníaSELECT (lnAreaPrevia) && vuelves a la tabla donde empezastes
Con el código anterior se usaron 8 instrucciones para la tarea, lo puedes 
acelerar con:
IF SEEK(tuValorClave, 'tablaDondeBuscas', 'xDondeBuscas')   * transferencia de 
datos, procesos asociados, lo que se necesite   NOTE que en este caso, hay que 
agregar el nombre de la tabla donde se busco cuando se referencian sus campos. 
ELSE   * procedimiento que no encontrado, blanqueo de campos o mensajes, lo que 
deENDIF
Como se puede ver, se pasaron de 8 instrucciones a 1, por más que fox sea 
rápido, las instrucciones tienen que ser interpretadas por el runtime, 1 a 1, 
si además este proceso lo tienes dentro de un bucle, podrás ver que se dispara 
la cantidad de instrucciones que se hacen.Otra cosa a analizar es como usas los 
índices. Si usas select de sql, los índices tienen que estar desactivados, si 
no, es más lento aunque el índice activo sea el correcto. (Fox recupera los 
datos usando el índice activo), y por el tipo de consulta, será más rápido 
traer los datos en orden físico.Otra cosa a revisar son que tipos de indices 
utilizas, y si son claves compuestas, como las armas.Saludos: Miguel, Santa 
Rosa (LP)
 

    El Jueves, 27 de octubre, 2016 14:18:45, Norberto Mario Alvarez 
<[email protected]> escribió:
 

 <!--#yiv3768674579 _filtered #yiv3768674579 {font-family:Helvetica;panose-1:2 
11 6 4 2 2 2 2 2 4;} _filtered #yiv3768674579 {font-family:"Cambria 
Math";panose-1:2 4 5 3 5 4 6 3 2 4;} _filtered #yiv3768674579 
{font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;} _filtered #yiv3768674579 
{font-family:Tahoma;panose-1:2 11 6 4 3 5 4 4 2 4;} _filtered #yiv3768674579 
{font-family:Verdana;panose-1:2 11 6 4 3 5 4 4 2 4;}#yiv3768674579 
#yiv3768674579 p.yiv3768674579MsoNormal, #yiv3768674579 
li.yiv3768674579MsoNormal, #yiv3768674579 div.yiv3768674579MsoNormal 
{margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New 
Roman", "serif";}#yiv3768674579 a:link, #yiv3768674579 
span.yiv3768674579MsoHyperlink 
{color:blue;text-decoration:underline;}#yiv3768674579 a:visited, #yiv3768674579 
span.yiv3768674579MsoHyperlinkFollowed 
{color:purple;text-decoration:underline;}#yiv3768674579 p 
{margin-right:0cm;margin-left:0cm;font-size:12.0pt;font-family:"Times New 
Roman", "serif";}#yiv3768674579 p.yiv3768674579MsoAcetate, #yiv3768674579 
li.yiv3768674579MsoAcetate, #yiv3768674579 div.yiv3768674579MsoAcetate 
{margin:0cm;margin-bottom:.0001pt;font-size:8.0pt;font-family:"Tahoma", 
"sans-serif";}#yiv3768674579 span.yiv3768674579TextodegloboCar 
{font-family:"Tahoma", "sans-serif";}#yiv3768674579 
span.yiv3768674579EstiloCorreo20 {font-family:"Calibri", 
"sans-serif";color:#1F497D;}#yiv3768674579 .yiv3768674579MsoChpDefault 
{font-size:10.0pt;} _filtered #yiv3768674579 {margin:70.85pt 3.0cm 70.85pt 
3.0cm;}#yiv3768674579 div.yiv3768674579WordSection1 {}-->Gracias por las 
respuestas. Para Guardar uso =TABLEUPDATE(.T.) para el caso de un registro y 
para el caso de varios registros =TABLEUPDATE(2,.T.)  Para tablas Indexadas use 
el SEEK y el IF FOUND()  Y para tablas muy pequeñas y en búsqueda el LOCATE  
Comunmente los índices siempre están activados cuando guardo registros.      
Norberto AlvarezSocio # 1882    De: [email protected] [mailto:[email protected]] En 
nombre de Carlos Miguel FARIAS
Enviado el: jueves, 27 de octubre de 2016 11:50
Para: GUFA List Member
Asunto: [GUFA] Velocidad Tablas Nativas  Que comando usas para actualizar los 
datos?gather, replace, replace for, update where?Como accedes a los datos?seek, 
locate, seek(), find y found()? y luego Scatter?O usas SELECT INTO Cursor, y de 
allí algo para actualizar?Que tipo de índices tienes para acceder a los datos, 
tienes indices sobre los campos de acceso (supongo no faltan las PK) o de 
filtro?Si usas y Cuando usas comandos SQL, tienes los índices activados?Son 
elementos a tener en cuenta cuando hay cuellos de botella en el acceso a datos, 
además de lo que indicó José que es importantisimo.Saludos: Miguel, Santa Rosa 
(LP)  El Jueves, 27 de octubre, 2016 11:02:27, Jose Paez <[email protected]> 
escribió:  Hola Norberto  Sugiero que pruebes agregando un archivo Config.fpw 
al proyecto, configurando el "path" a una carpeta temporal (existente)  del 
puesto de trabajo.  TMPFILES path EDITWORK path SORTWORK path PROGWORK path   
Saludos  José Paez  De: [email protected] <[email protected]> en nombre de Norberto 
Mario Alvarez <[email protected]>
Enviado: jueves, 27 de octubre de 2016 12:02 p. m.
Para: GUFA List Member
Asunto: [GUFA] Velocidad Tablas Nativas  Estimados Colisteros, estoy 
necesitando un consejo por parte de Uds. Resulta que en un Cliente, debido al 
crecimiento de equipos a un servidor y al mismo tiempo, aumentó la concurrencia 
a este, se esta notando que cada vez mas lento, se torna el Sistema. Esto me 
implica, quejas, etc, etc.. Como comentario adicional, les cuento que abro la 
base de datos en el momento que se ejecuta el sistema y que en cada formulario, 
no uso el Entorno de datos, sino, que en el Load de cada formulario, abro las 
tablas que voy a necesitar en el mismo u las cierro en el momento que salgo del 
formulario (unload). Cuando baja la concurrencia al sistema, mejora muchísimo 
la velocidad del acceso. En muchos procesos utilizo cursores, creados al 
ejecutar el mismo, sobre todos para generar búsquedas rápidas. Pero donde 
encuentro el mayor de las caídas es cuando guardo registros en tres o cuatro 
tablas al mismo tiempo, es impresionante la demora. Bueno estoy apelando a 
vuestras experiencias, consejos y sugerencias. Desde ya muchas gracias por 
vuestra atención.  Norberto AlvarezSocio # 1882    

   

Responder a