Hola invitado         10 Sep, 2010 - 10:07
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Matar sus índices con REINDEX (Christof Wollenhaupt) Traducción lecturas 2709
 Enviado por amby en Lunes, 10 Septiembre, 2007
Artículos El comando REINDEX de VFP tiene grandes inconvenientes, puede provocar más problemas que los que intenta reparar.

Christof Wollenhaupt en este escrito comenta algunas de las peculiaridades del funcionamiento este comando y finalmente recomienda NO utilizarlo.

Matar sus índices con REINDEX

Artículo original: Kill your index with REINDEX
http://www.foxpert.com/knowlbits_200708_2.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)


Cuando usted lee sobre cómo reparar índices en foros de FoxPro, frecuentemente recibe el consejo de evitar REINDEX. La razón más frecuente es que REINDEX depende del encabezado, que podría estar corrupto. Esto es cierto; pero como la mayoría de los desarrolladores, no he visto una cabecera de índice corrupta en años. La cabecera se actualiza solamente cuando agrega una etiqueta. Como esto requiere un acceso exclusivo a la tabla, hay poca oportunidad de introducir errores debido a empleo de caché, problemas con acceso multiusuario, etc.

Sin duda alguna, REINDEX es una mala idea. Para crear un nuevo archivo CDX, Visual FoxPro tiene que eliminar el CDX antiguo. Durante un corto tiempo la tabla existe sin archivo CDX. Este momento es suficientemente corto, para causar un mal funcionamiento. Cuando se cancela REINDEX debido a un error, no va a restablecer el archivo CDX anterior. Como demuestra el siguiente ejemplo, al final tendrá una tabla sin índices.

Create Cursor curDemo (cID C(1))
Insert into curDemo Values ("A")
Insert into curDemo Values ("B")
Index on GetID(cID) Tag cID CANDIDATE
? ">", Key(1)
Reindex
? ">", Key(1)
plKill = .T.
Reindex
? ">", Key(1)

Procedure GetID(tcID)
  If Vartype(m.plKill) == "L"
    Return "A"
  Else
    Return m.tcID
  EndIf
EndProc

Ejecute este programa e ignore el mensaje de error. Puede ver que KEY(1) devuelve una expresión válida las dos primeras veces; pero nada la última vez. Si ha utilizado una tabla, notará que el archivo CDX no está. Este es el único problema cuando encuentra un error durante una operación de índices. Además de los problemas de memoria y conexiones de red, puede encontrar errores en índices candidatos y primarios cuando:

  • añadió un índice sin permitir a VFP verificar los datos existentes
  • ejecutó algún tipo de índice corrupto que permitió a VFP agregar múltiples registros con la misma llave o
  • tuvo un índice en una función que está provocando un error

En cualquier caso, es probablemente mejor evitar estos problemas y no emplear REINDEX en una aplicación en producción.


 Versión imprimible  
Matar sus índices con REINDEX (Christof Wollenhaupt) Traducción | Entrar/Crear una cuenta | 0 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.



Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.