2009-06-01 20 views

Odpowiedz

8

Zapytanie, które wybiera tylko kilka pól, może działać całkowicie w indeksie. Na przykład, jeśli masz indeks (idZamówienia) ta kwerenda wymagałoby odnośnika tabeli:

select Status from Orders where OrderId = 42 

Ale jeśli dodać Composite Index na (idZamówienia, status) silnik może pobierać wszystkie potrzebne informacje od indeks.

Sortowanie na wielu kolumnach może korzystać ze złożonego indeksu. Na przykład indeks (Nazwisko, imię) skorzystaliby to zapytanie:

select * from Orders order by LastName, FirsName 

Czasami masz niepowtarzalną constrant na wielu kolumnach. Powiedz na przykład, że każdego dnia restartujesz numery porządkowe. Wtedy OrderNumber nie jest unikalny, ale jest (OrderNumber, OrderDayOfYear). Możesz wymusić to za pomocą unikalnego indeksu złożonego.

Jestem pewna, że ​​istnieje wiele więcej zastosowań dla indeksu złożonego, a jedynie kilka przykładów.

+0

gdzie OrderId = 42 => brak potrzeby złożonego, tylko OrderId. Morevoer a composite (Id, OrderId) nie pomoże, może być użyty tylko w zapytaniu za pomocą Id lub Id oraz OrderId. Nie jestem ekspertem od DB, ale nie jestem pewien, czy indeks złożony (jeśli nie jest klastrowany) jest naprawdę przydatny dla wybranego * –

+0

@Guillaume: oznaczał indeks na (OrderId, Status), edytowany w odpowiedzi. – Andomar

14

Indeksy złożone są przydatne, gdy zapytania SELECT często używają tych kolumn jako kryteriów w klauzulach WHERE. Poprawia szybkość pobierania. Powinieneś ich unikać, jeśli nie są konieczne.

Ta article dostarcza naprawdę dobrych informacji.

+1

+1 za artykuł –

+0

+1 za dobre referencje. Czy istnieje jakiś podobny artykuł dla Oracle? – hsalimi

Powiązane problemy