2011-11-29 19 views
5

Sto tentando di compilare un elenco di indici di database non specifici del sistema. Ho esaminato Oracle, DB2, MySQL, Postgres e Sybase e quasi ogni risorsa ha un elenco diverso. Finora ho visto:Diversi tipi di indici di database?

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

Sembra che diversi sistemi abbiano nomi diversi per gli stessi tipi di indici.

Esistono tipi di indice standard su tutti i sistemi?

risposta

2

Si dovrebbe setacciare più difficile :-) - Wiki dà una buona descrizione

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

+0

ho visto l'articolo wiki, ma hanno due liste diverse 'tipi': non cluster, cluster, gruppo (Oracle) e bitmap, densa, sparse, invertire Questo significa che non ci sono bitmap in cluster, bitmap non cluster e così via per gli altri tipi? – Nathron

2

Molti dei questi concetti sono ortogonali. Un indice cluster indica che le righe sono disposte nella tabella nello stesso ordine in cui appaiono nell'indice. Indipendentemente, tale indice può essere implementato usando un albero B, un albero B +, un hash, spazialmente, ecc. E quindi può dividere la tabella o meno. Un aspetto può vincolare ma non implica necessariamente un altro.

+0

Nel mio progetto più recente ho utilizzato le seguenti varianti di indice: cluster (gli indici delle chiavi primarie in MySQL sono per definizione raggruppati), non cluster (chiavi esterne), unico, non esclusivo, B-Tree e spaziale. –