Question

Which databases use real multidimensional indices? Is oracle ever using several indices to get data from tables, or will it always take the one that seems to have the highest selectivity? How about other dbms?

Was it helpful?

Solution

Oracle has an index type called a Bitmap Index which it describes as...

A database index in which the database stores a bitmap for each index key instead of a list of rowids.

If a table has a bitmap index or a hint is used, it can use a bitmap access plan on regular B-tree indexes. Bitmap indexes can be joined, union-ed, and intersected.

There is an excellent explanation at use-the-index-luke.com where it includes the following implementations of combining multiple B-Tree indexes:

DB2: DB2 supports multiple index access on LUW 9r7 (using a dynamic bitmap) and on zOS v10.

MySQL: MySQL has an index merge optimization starting with release 5.0.

Oracle The Oracle database uses BITMAP CONVERSIONs to combine multiple indexes on the fly (introduced with 9i).

PostgreSQL PostgreSQL uses bitmaps to combine multiple indexes since version 8.1.

SQL Server SQL Server can use multiple indexes ("Index Intersect") starting with V7.0 using a hash algorithm.

See also this StackOverflow question in which the first answer says that SQL Server does something similar to Bitmapped indexes using index intersection.

Efficient and Flexible Bitmap Indexing for Complex Similarity Queries is the closest reference I have found associating Bitmapped indexes with the word multidimensional. Multidimensional seems to be more of a way to use indexes rather than an attribute of them.

OTHER TIPS

SQL Server may perform "Index intersection". And on MSDN.

Is this what you mean?

Possibly Oracle bitmap indexes are that what you are looking for. Oracle Index types.

I think they permit union and intersection. But I admit, that I'm not familiar with them.

Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top