2013-03-29 11 views
12

Ho recentemente smesso di pensare che le chiavi primarie non siano indici, sono una combinazione di vincoli Unici e Nulli. E fino ad ora, non ho mai creato l'indice per le colonne PK. La mia domanda è se dovessi creare un indice per le colonne PK se questa colonna verrà utilizzata nella parte WHERE di molte query.Devo indicizzare le colonne di chiavi primarie in Oracle

+2

Chiavi primarie _are_ indicizzate. – Mat

+1

Per vedere l'indice che sostiene il vincolo di chiave primaria:. select * ui da user_constraints uc, USER_INDEXES ui dove uc.table_name = 'MY_TABLE_NAME' e constraint_type = 'P' e ui.TABLE_OWNER = uc.OWNER e ui.TABLE_NAME = uc.TABLE_NAME e ui.INDEX_NAME = uc.INDEX_NAME; – rimsky

risposta

14

Oracle creerà un indice per te oppure può usarne uno esistente. L'utilizzo di un indice unico o non esclusivo dipende da te.

http://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm#i1006566

Una chiave primaria sé non è un indice, e non è un vincolo univoco - sono entrambi vincoli. Tuttavia un indice viene utilizzato per supportarli.

Un indice univoco è piuttosto diverso in quanto può esistere in assenza di un vincolo di chiave univoco o primario e nessun tipo di vincolo richiede che l'indice che lo supporta sia univoco.

Problemi correlati