2013-03-29 9 views
12

Niedawno przestałem myśleć, że Klucze podstawowe nie są indeksami, są połączeniem ograniczeń Unikalnych i Null. Do tej pory nigdy nie stworzyłem indeksu dla kolumn PK. Moje pytanie brzmi, czy powinienem utworzyć indeks dla kolumn PK, jeśli kolumna ta będzie używana w WHERE części wielu zapytań.Powinny wskazywać kolumny z kluczem podstawowym w Oracle

+2

Klucze podstawowe _ są_ zindeksowane. – Mat

+1

Aby zobaczyć indeks, który popiera ograniczenie klucza podstawowego. wybierz ui * z USER_CONSTRAINTS uc, USER_INDEXES ui gdzie uc.table_name = 'MY_TABLE_NAME' i constraint_type = 'P' i ui.TABLE_OWNER = uc.OWNER i ui.TABLE_NAME = uc.TABLE_NAME i ui.INDEX_NAME = uc.INDEX_NAME; – rimsky

Odpowiedz

14

Oracle utworzy dla Ciebie indeks lub może użyć istniejącego. To, czy używany jest unikalny lub nieunikalny indeks, należy do Ciebie.

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

sam klucz podstawowy nie jest indeksem, a nie jest UNIQUE - obaj są ograniczenia. Jednak do ich obsługi używany jest indeks.

Indywidualny indeks różni się znacznie, ponieważ może istnieć pod nieobecność ograniczenia unikalnego lub podstawowego, a żaden typ ograniczenia nie wymaga, aby indeks, który go wspiera, był unikalny.

Powiązane problemy