An
improved method of partitioning and indexing multi-dimensional data that maps the data to one-dimensional values according to the sequence in which an approximation of a
Hilbert space-filling curve passes through all of the points corresponding to potential multi-dimensional data in a
data space. Data is partitioned into pages, each corresponding to a length of
Hilbert curve. A page identifier is the sequence of the first point on its corresponding
Hilbert curve section. The mapping orders data and also orders the data pages that contain data within a
database. Mapping multi-dimensional data to one-dimensional values enables the data to be indexed using any one-dimensional index structure. The practical application of the indexing method is made viable and useful by the provision of a querying
algorithm enabling data to be selectively retrieved in response to queries wherein all or some of the data that lies within a rectangular space within multi-dimensional space is required to be retrieved. The querying
algorithm identifies pages whose corresponding curve sections intersect with a query region. The first intersecting page is found by calculating the lowest one-dimensional value corresponding to a possible multi-dimensional
data value or point within the query region, and looking up in the index to find which page may contain this point. The next intersecting page, if it exists, is found by calculating the lowest one-dimensional value equal to or greater than the identifier of the next page to the one just identified. This new lowest one-dimensional, if found, is used to look up in the index and find the next page intersecting with the query region. Subsequent pages to be found, if any, are determined in a similar manner until no more are found. Pages found to intersect the query region can be searched for data
lying within the query region.