Share via


INDEX (Comando)

Crea un archivo de índice para mostrar registros de tabla y tener acceso a los mismos en un orden lógico.

INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]
   [FOR lExpression]   [COMPACT]   [ASCENDING | DESCENDING]
   [UNIQUE | CANDIDATE]   [ADDITIVE]

Parámetros

  • eExpression
    Especifica una expresión de índice que puede incluir el nombre de campos de la tabla actual. Se crea en el archivo de índice una clave de índice basada en la expresión de índice para cada registro de la tabla. Visual FoxPro usa estas claves para mostrar registros de la tabla y tener acceso a los mismos.

    Nota   No use una variable, un elemento de matriz o un campo o una expresión de campo de una tabla de otra área de trabajo para eExpression. Si tiene acceso a un índice que contenga una variable que ya no existe o que no se puede encontrar, Visual FoxPro generará un mensaje de error. Los campos memo no se pueden usar individualmente en expresiones de archivo de índice; deben combinarse con otras expresiones de caracteres. Si incluye un campo con un prefijo de alias de tabla o letra de área de trabajo en la expresión de índice, Visual FoxPro generará un mensaje de error. Aunque puede optimizar las cláusulas FOR con la tecnología Rushmore si se incluyen los campos con alias, se recomienda que evite el uso de campos con alias al crear índices. En varios casos (USE ... AGAIN, consultas SQL, etc.), se asigna automáticamente un alias diferente a una tabla y puede que el índice no se use o actualice de forma apropiada. Para obtener más información acerca de la tecnología Rushmore, vea Utilizar Rushmore para agilizar el acceso a datos.

    Si intenta generar un índice con una clave de longitud variable, la clave se rodeará con espacios. Las claves de índice de longitud variable no se admiten en Visual FoxPro.

    Es posible crear una clave de índice de longitud 0. Por ejemplo, cuando la expresión de índice es una subcadena de un campo memo vacío, se crea una clave de índice de longitud 0. Una clave de índice de longitud 0 generará un mensaje de error. Cuando Visual FoxPro crea un índice, evalúa los campos en el primer registro de la tabla. Si un campo está vacío, puede ser necesario escribir datos temporales en el campo del primer registro para evitar una clave de índice de longitud 0.

    La longitud de una clave de índice para un índice .idx debe estar entre 1 y 100 caracteres. La longitud de una clave de índice para un índice .cdx debe estar entre 1 y 240.

  • TO IDXFileName
    Crea un archivo de índice .idx. Se da al archivo de índice la extensión predeterminada .idx, que puede pasar por alto si incluye una extensión diferente o si cambia la extensión de índice predeterminada del archivo de configuración de Visual FoxPro. Deben cumplirse las reglas estándar de Windows para nombrar archivos, que incluyen nombres largos de archivo, al crear archivos de índice.

  • TAG TagName [OF CDXFileName]
    Crea un archivo de índice compuesto. Un archivo de índice compuesto es un archivo de índice simple que consiste en un número cualquiera de etiquetas independientes (entradas de índice). Cada etiqueta está identificada por un nombre único de etiqueta. Los nombres de etiquetas deben comenzar con una letra o un signo de subrayado y pueden consistir en cualquier combinación de letras, números o subrayados hasta un máximo de diez. El número máximo de etiquetas de un archivo de índice compuesto solamente está limitado por el espacio libre en memoria y disco.

    Los archivos de índice compuesto de entradas múltiples siempre son compactos. Por eso no es necesario incluir el comando COMPACT al crear un índice de este tipo. A los nombres de archivos de índice compuesto se les asigna una extensión .CDX.

    Se pueden crear dos tipos de archivos de índice compuesto: estructurales y no estructurales.

    Si excluye la cláusula opcional OF CDXFileName de TAG TagName, estará creando un archivo de índice compuesto estructural. Un archivo de índice compuesto estructural siempre lleva el mismo nombre base de la tabla y se abre de forma automática al abrir ésta.

    Si no se puede encontrar el archivo de índice compuesto estructural de una tabla, se elimina o se cambia de nombre y aparece un cuadro de diálogo al intentar abrir la tabla. Si elige el botón Cancelar predeterminado, la tabla no se abrirá. Si elige Omitir se abre la tabla y se elimina el indicador del encabezado de la tabla que indica que está presente un archivo de índice compuesto estructural.

    Sugerencia   Para volver a asociar un índice compuesto estructural que ha sido separado de su tabla, ejecute el comando siguiente:

    USE TableName INDEX CDXFileName
    

    Si incluye la cláusula opcional OF CDXFileName después de TAG TagName, estará creando un archivo de índice compuesto no estructural. A diferencia de los archivos de índice compuesto estructurales, un archivo no estructural debe abrirse explícitamente incluyendo la cláusula SET INDEX o INDEX en la composición del comando USE.

    Si ya se ha creado y abierto un archivo de índice compuesto, al ejecutar INDEX con TAG TagName se agrega una etiqueta al archivo de índice compuesto.

    CDXFileName es el nombre del índice compuesto estructural no asociado. Asegúrese de reindizar la tabla si se ha modificado desde que se desasoció el índice compuesto estructural.

  • FOR lExpression
    Especifica una condición en la que solamente los registros que satisfacen la expresión del filtro lExpression están disponibles para su visualización y acceso. Únicamente se crean las claves de índice de aquellos registros que cumplen la expresión del filtro.

    Rushmore optimiza un comando INDEX ... FOR lExpression si lExpression es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

    Si desea obtener más información, vea SET OPTIMIZE y Utilizar Rushmore para agilizar el acceso a los datos.

  • COMPACT
    Crea un archivo .IDX compacto.

  • ASCENDING
    Especifica un orden ascendente para el archivo .CDX. Las etiquetas .CDX se crean de manera predeterminada en orden ascendente (puede incluir ASCENDING como recordatorio del orden del índice del archivo). Se puede indizar una tabla en orden inverso si se incluye DESCENDING.

  • DESCENDING
    Especifica un orden descendente para el archivo .CDX. No se puede incluir DESCENDING al crear los archivos de índice .IDX. Sin embargo, sí puede especificar un orden descendente para un archivo de índice .IDX con SET INDEX y SET ORDER.

  • UNIQUE
    Especifica que solamente se incluirá el primer registro encontrado en una clave de índice determinada en un archivo .IDX o en una etiqueta .CDX. Se puede usar UNIQUE para evitar la presentación o el acceso a los registros duplicados. Se excluyen todos los registros agregados con claves de índice duplicadas del archivo de índice. Utilizar la opción UNIQUE de INDEX es lo mismo que ejecutar SET UNIQUE ON antes de ejecutar INDEX o REINDEX.

    Cuando está activo un índice o una etiqueta de índice se actualizan si se cambia un registro duplicado de manera que cambie su clave de índice. Sin embargo, no se puede mostrar ni tener acceso al siguiente registro duplicado con la clave de índice original hasta que vuelva a indizar el archivo con REINDEX.

  • CANDIDATE
    Crea una etiqueta candidata de índice estructural. La palabra clave CANDIDATE sólo se puede incluir cuando se crea una etiqueta de índice estructural, de no ser así Visual FoxPro genera un mensaje de error.

    Una etiqueta candidata de índice evita los valores duplicados del campo o la combinación de campos especificada en la expresión de índice eExpression. El término "candidata" se refiere al tipo de índice. Como los índices candidatos evitan los valores duplicados, se convierten en "candidatos" a ser índices principales.

    Visual FoxPro genera un error si crea una etiqueta de índice candidata para un campo o combinación de campos que ya contengan valores duplicados.

    Para obtener más información acerca de las etiquetas de índice candidato o principal, vea Establecer un índice principal o candidato.

  • ADDITIVE
    Mantiene abiertos cualquier archivo de índice abierto anteriormente. Si omite la cláusula ADDITIVE cuando crea archivos de índice para una tabla con INDEX, los cerrará (excepto los de tipo compuesto estructural).

Observaciones

Los registros de una tabla que tiene un archivo de índice se muestran, y se tiene acceso a los mismos, en el orden especificado por la expresión del índice. El orden físico de los registros de la tabla no se ve alterado por la presencia de un índice.

Si SET TALK está establecido en ON (activado), Visual FoxPro informa de cuántos registros se indizan durante el proceso. El intervalo de registros mostrados durante la indización puede especificarse con SET ODOMETER.

Utilice DISPLAY STATUS para mostrar más información acerca de los archivos de índice. Esta información incluye los nombres de todos los archivos de índice abiertos, sus tipos (estructural, .CDX, .IDX), las expresiones del índice, sus secuencias de correlación y el nombre del archivo de índice o etiqueta maestros.

El número de archivos de índice (.idx o .cdx) que pueden abrirse sólo está limitado por la memoria y los recursos del sistema. En Visual FoxPro, FoxPro para Windows y FoxPro para MS-DOS, el número máximo de archivos que puede abrir viene determinado por la opción FILES del archivo de configuración CONFIG.SYS de MS-DOS. Si desea más información acerca de la opción FILES, consulte su manual de MS-DOS.

Tipos de índices   Visual FoxPro le permite crear dos tipos de archivos de índice:

  • Archivos de índice compuesto .CDX con entradas de índice múltiples denominadas etiquetas.
  • Archivos de índice .IDX con una sola entrada de índice.

También puede crear un archivo de índice compuesto estructural, que se abrirá automáticamente con la tabla.

Sugerencia    Los archivos de índice compuesto son los preferidos, ya que se abren automáticamente al abrir la tabla.

Incluya COMPACT para crear archivos de índice .IDX compactos. Los archivos de índice compuesto siempre son compactos.

Orden del índice y actualización   Un único archivo de índice (el archivo de índice maestro) o etiqueta (la etiqueta maestra) controla el orden en que se muestra la tabla o en el que se tiene acceso a la misma. Algunos comandos, como SEEK, utilizan el archivo de índice maestro o la etiqueta para buscar registros. Sin embargo, todos los archivos de índice .IDC o .CDX abiertos se actualizan al mismo tiempo que se realizan los cambios en la tabla. Puede elegir el archivo de índice maestro o la etiqueta con la cláusula INDEX de USE, o con SET INDEX y SET ORDER.

Nota   Si se reemplaza un campo de clave, cambiará la posición relativa en el índice para el registro actual. Por tanto, debe ser prudente al realizar una operación como REPLACE ALL o SCAN … ENDSCAN mientras cambia el índice para el alcance. Esto también se aplica a operaciones REPLACE en los índices generados con una cláusula FOR.

Funciones definidas por el usuario   Aunque una expresión de índice puede contener una función definida por el usuario, no debería utilizarlas en una expresión de índice. Las funciones definidas por el usuario dentro de una expresión de índice aumentan el tiempo necesario para crear o actualizar el índice. Además, no se pueden realizar actualizaciones del índice cuando se utiliza una función definida por el usuario en una expresión de índice.

Si utiliza una función definida por el usuario en una expresión de índice, Visual FoxPro debe ser capaz de localizar esa función. Cuando Visual FoxPro crea un índice, la expresión del índice se guarda en el archivo de índice, pero solamente se incluye una referencia en el mismo.

Ejemplo

El ejemplo 1 abre la tabla customer y crea un archivo de índice denominado complist, que muestra y procesa los registros en el orden alfabético del campo company.

En el ejemplo 2, se abre de nuevo la tabla customer y se crea un archivo de índice llamado citycomp a partir de una subcadena de los primeros cinco caracteres del campo city y los seis primeros del campo company. Cuando se utiliza este índice, los registros de la tabla se ordenan principalmente por el campo city y como segundo criterio por el campo company.

En el ejemplo 3, se crean las etiquetas de índice. La primera etiqueta es una etiqueta de índice compuesto estructural para address. La segunda etiqueta se crea en un archivo de índice no estructural llamado custcdx.

* Example 1
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
INDEX ON company TO complist
CLEAR
DISPLAY STATUS

* Example 2
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
INDEX ON SUBSTR(city,1,5) + SUBSTR(company,1,6) TO citycomp
CLEAR
DISPLAY STATUS

* Example 3
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
INDEX ON address TAG address
INDEX ON company TAG company OF custcdx
CLEAR
DISPLAY STATUS

Vea también

ALTER TABLE | CDX( ) | COPY INDEXES | COPY TAG | DELETE TAG | FOR( ) | INDEXSEEK( ) | KEY( ) | MDX( ) | NDX( ) | ORDER( ) | REINDEX | SET COLLATE | SET INDEX | SET ODOMETER | SET ORDER | SET TALK | SET UNIQUE | SORT | SYS(14) | SYS(21) | SYS(22) | SYS(2021) | TAG( ) | TAGCOUNT( ) | USE