1. A method of distributing a database across a plurality of compute nodes provided by a parallel computing system, comprising: subdividing data records stored in the database to create a plurality of database portions, wherein the database includes an index of the data records; distributing each of the plurality of database portions to one of the plurality of compute nodes; subdividing the index to generate a plurality of sub-indexes, wherein each sub-index provides an index of the data records stored in one of the plurality of database portions distributed to one of the plurality of compute nodes; distributing the plurality of sub-indexes to the plurality of compute nodes such that at least one of the compute nodes includes at least one database portion having data records not indexed by a sub-index of the plurality of sub-indexes; storing each generated sub-index on a compute node storing the data records reflected in the sub-index; and maintaining index usage statistics reflecting the use of the sub-index in processing database queries directed to the compute node storing the data records indexed by the sub-index.