btrieve uses a b-tree format to store record indexes on particular table columns. the index maps each set of indexed column values to the set of unique identifiers for the rows that have those column values, which provides a quick way to find the rows within a table using the indexed column. b-trees are tree data structures and are very efficient as a mechanism for fast data retrieval. the drawback of a btree is that data must be constantly balanced when it is inserted into the tree, therefore btrieve only stores the record index as btree to reduce the amount of time it takes to insert and update records. a separate b-tree is kept for each index in the system, and the root node information is kept in the fcr. in btrieve 6.x a new index can be created at file creation time, or added and dropped after the file is created. index pages are also created as they are needed. before btrieve 6.0 existing key indexes could not be removed, though supplemental indexes could be created and dropped as needed.