in the following description of the preferred embodiment , reference is made to the accompanying drawings which form a part hereof , and which is shown by way of illustration a specific embodiment in which the invention may be practiced . it is to be understood that other embodiments may be utilized as structural changes may be made without departing from the scope of the present invention . fig1 is a block diagram illustrating an exemplary hardware environment used to implement the preferred embodiment of the invention . in the exemplary environment , a computer system 100 is comprised of one or more processors 102 coupled via an interconnect 104 . one or more peripheral devices 106 , including fixed and / or removable data storage devices such as a hard disk , floppy disk , cd - rom , tape , etc ., may be coupled to each of processors 102 . the present invention is typically implemented using a number of computer programs executed in parallel by the processors 102 , including scan programs 108 , sort programs 110 , merge programs 112 , and index build programs 114 . using these computer programs , the present invention builds an index 116 for a database file 118 having one or more partitions 120 , all of which are stored in one or more of the data storage devices 106 . preferably , each of the partitions 120 is scanned in parallel by the scan programs 108 and the scanning results are then sorted in parallel by the sort programs 110 , in order to enhance the performance of the system . the scan 108 , sort 110 , merge 112 , and index build 114 computer programs all execute under the control of an operating system , such as mvs , aix , os / 2 , windows nt , windows , unix , etc . further , the scan 108 , sort 110 , merge 112 , and index build 114 computer programs are all tangibly embodied in or readable from a computer - readable medium , e . g . one or more of the data storage devices 106 and / or data communications devices coupled to the computer system 100 . moreover , the scan 108 , sort 110 , merge 112 , and index build 114 computer programs are all comprised of instructions which , when read and executed by the processors 102 , cause the processors 102 to perform the steps necessary to implement and / or use the present invention . those skilled in the art will recognize that any combination of the above components , or any number of different components , peripherals , and other devices , may be used to implement the present invention . for example , the present invention may implemented on lesser or greater numbers of processors 102 without departing from the scope of the present invention . further , the number and configuration of the scan 108 , sort 110 , merge 112 , and index build 114 computer programs may be altered without departing from the scope of the present invention . finally , the structure of the index 116 , file 118 , and / or partitions 120 may be altered without departing from the scope of the present invention . fig2 is a flowchart illustrating the general logic of the recover / build index system according to the present invention . the recover / build index system of the present invention builds an index 116 by scanning or unloading partitions 120 of the file 118 in parallel . in step 200 , concurrent scan programs 108 are used to scan every record of each partition 120 . the scan programs 108 executing in parallel extract key values ( of a particular key ) and record identifiers ( rids ) or pointers from the partitions 120 to create a key / rid or scan stream for each partition 112 . while the scan programs 108 are scanning the partitions 120 , the file 118 can still be read by other programs . the parallel scan programs 108 pass the scan streams to the sort programs 110 . in step 202 , the sort programs 110 executing in parallel receive the scan streams for each partition 120 and create a sort stream therefrom , and then pass the sort stream to the merge program 112 . each sort program 110 can accept a scan stream from one or more scan programs 108 . in step 204 , the merge program 112 merges the sort streams received from the sort programs 110 to create a merge stream . the merge program 112 accepts the sort streams from two or more sort programs 110 . the merge program 112 then passes the merge stream to an index build program 114 . in step 206 , the index build program 114 builds the index 116 from the merge stream received from the merge program 112 . the index 116 is built in a compact and compressed manner , because the key values are sorted . as a result , complete blocks or pages of sequential key / rid values can be written to the index 116 and the index build program 114 improves the efficiency of i / o and improves the final organization of the index 116 . moreover , by performing many of the steps for building the index 116 in parallel , the high performance recover / build index system reduces the amount of time that it takes to build an index 116 . additionally , the recover / build index system can exploit the use of multiple processors 102 . additionally , piping the data between the sort 110 and merge 112 programs improves performance . intermediate communication or intermediate files are used to transfer data between the sort 110 , merge 112 , and index build 114 programs . additionally , after scanning the partitions 120 to extract key values and record identifiers , this information is written to a file on a data storage device 106 . then , in case of system failure , the index 116 can be quickly rebuilt using the steps discussed above . fig3 is a dataflow diagram that illustrates the operation of a first embodiment of the recover / build index system according to the present invention . in this embodiment , the recover / build index system includes multiple scan programs 108 that are performed in parallel by multiple processors 102 against multiple partitions 120 of one file 118 to extract key / rid values . similarly , sort programs 110 are performed in parallel to sort the extracted key / rid values . thereafter , one or more merge programs 112 are performed to merge the key / rid values received from the sort programs 110 . finally , an index build program 114 is performed using a single stream of key / rid values from the merge programs 112 to build the index 116 . fig4 is a dataflow diagram that illustrates the operation of a second embodiment of the recover / build index system according to the present invention . in this embodiment of the recover / build index system , multiple merge programs 112a - b are performed in parallel . again , scan programs 108 are performed in parallel to retrieve key / rid values . then , multiple sort programs 110 are performed in parallel to sort the key / rid values by their key . next , multiple intermediate merge programs 112a are performed on the key / rid values to generate merged data streams that are forwarded to a single final merge program 112b that merges all of the key / rid values ( wherein the merge programs 112a - b are referred to as nested merges ). finally , an index build program 114 is performed to build the index 116 using the merged key / rid values . if more than one index 116 is to be built , the above steps may be performed on multiple streams of different key / rid values . the foregoing description of the preferred embodiment of the invention has been presented for the purposes of illustration and description . it is not intended to be exhaustive or to limit the invention to the precise form disclosed . many modifications and variations are possible in light of the above teaching . it is intended that the scope of the invention be limited not by this detailed description , but rather by the claims appended hereto .