8

I am trying to compile a list of non-system-specific database indexes. I've looked at Oracle, DB2, MySQL, Postgres and Sybase, and almost every resource has a different list. So far I have seen:

clustered, multi-dimensional clustered, unclustered, unique,
non-unique, b-tree, hash, GiST, GIN, full-text, bitmap,
partitioned, function-based.

It seems that different systems have different names for the same types of indexes.

Are there standard index types across all systems?

Nathron
  • 1,462
  • 1
  • 16
  • 22

4 Answers4

8

If for whatever reason somebody else comes across this and is wondering the same thing, I ended up finding a good list at:

http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems#Indexes

Nathron
  • 1,462
  • 1
  • 16
  • 22
2

Many of the these concepts are orthogonal. A clustered index means that the rows are arranged in the table in the same order as they appear in the index. Independently, that index can be implemented using a B-tree, a B+ tree, a hash, spatially, etc. And then it may partition the table or not. One aspect may constrain but does not necessarily imply another.

David Harkness
  • 33,903
  • 10
  • 107
  • 127
  • In my most recent project I have used the few following index variations: clustered (primary key indexes in MySQL are by definition clustered), unclustered (foreign keys), unique, non-unique, B-Tree, and spatial. – David Harkness May 02 '13 at 08:37
2

You should scour harder :-) - Wiki gives a good description

http://en.wikipedia.org/wiki/Database_index

Adrian Cornish
  • 20,973
  • 11
  • 50
  • 74
  • I saw the wiki article, but they have two different 'types' lists: non-clustered, clustered, cluster (oracle) and bitmap, dense, sparse, reverse Does this mean that there are clustered bitmaps, unclustered bitmaps, and so on for the other types? – Nathron Nov 30 '11 at 00:36