|
|||||||
UpdateIndex and RebuildIndex_SubWith version 3.0, the rebuilding of indexes was made much more efficient. The engine behind this change is the subroutine RebuildIndex_Sub. This may be used by the developer to rebuild indexes on one or more fields within a table, under programmatic control with error reporting. As with the version 3.x indexing in general, rebuilds on multiple indexes are now much more efficient. In addition a new TCL command, UpdateIndex was added to permit the easy flushing of indexes from TCL. The syntax of UpdateIndex is straightforward, as SysMessage W881 puts it The correct form for the "UPDATEINDEX" command is: UPDATEINDEX file_name field_name index_type Note however, that ALL may be used in place of the file_name or field_name, and that the index_type seems to be at least the first letter of the respective index type, i.e. B for Btree, C for Cross reference and R for relational. Note further that the system will accept references to cross referenced fields by either their full name e.g. NAME_XREF or by their abbreviated form e.g. NAME. RebuildIndex_Sub takes 5 parameters as follows DataTable, DataHandle, IndexHandle , FieldInfo , FlagAll DataTable The name of the table to which the indexes belong. DataHandle The table variable of the table to which the indexes belong. IndexHandle The table variable of the index table belonging to the indexed table. FieldInfo Field mark delimited array, having one field for each index to be updated. Within each field are ten multi-values describing a different aspect of the index to be updated. The apparent structure is as follows :- < 1 > Name of the indexed column being updated. Note that in the case of XREF indexes, the _XREF should be removed. < 2 > The index type, as a word, these being Btree CrossRef Related To < 3 > Only used for "Related To" indexes. Contains the name of the index description record in the ! file describing the index, e.g. CUSTOMERS*INVOICE_KEYS*BOT < 4 > Name to display in progress report on status line for this index. < 5 > Set to 1 for Btrees and Cross Refs and 2 for relational. < 6 > The column number being indexed, or in the case of symbolic columns, the name of the column. < 7 > Convert to uppercase flag, 1 for Yes, 0 for No. < 8 > Justification of the data and key to index. I.E. RL to give right justified data and left justified key. < 9 > Sort order of the data and key to index. I.E. AD to give ascending data and descending key. < 10 > Seems to be used as a flag as to whether the current column is multivalued. If this flag is set then all values in the column are indexed. If this flag is set to false then only the first multivalue is indexed. Note that this is a major departure from the old default state that ALL multi values were indexed regardless of whether the dictionary item was declared as MVed. FlagAll A flag used if the developer knows that they wish to rebuild all of the indexes in a table. Note that RevTI sources indicate that this should only be used if the developer is confident that ALL indexes in the table are nominated in FieldInfo.(Volume 4, Issue 10, Pages 5-7) |
|||||||
| |||||||