W MySQL, po utworzeniu złożonego klucza podstawowego, na przykład z kolumnami X, Y, Z
, wszystkie trzy kolumny automatycznie stają się indeksami. Czy to samo dzieje się z Postgres?Podstawowy klucz złożony PostgreSQL
Odpowiedz
Jeśli utworzysz złożony klucz podstawowy, na (x, y, z)
, PostgreSQL zaimplementuje to za pomocą jednego UNIKALNEGO indeksu wielu kolumn na (x, y, z)
. Ponadto, wszystkie trzy kolumny muszą być oczywiście NOT NULL
, co jest główną różnicą między PRIMARY KEY
i UNIQUE INDEX
.
Poza oczywistymi ograniczeniami swoich danych, multi-column index posiada również nieco inny wpływ na wydajność zapytań niż trzech indywidualnych indeksów na x
, y
i z
.
Przeprowadziliśmy bardzo szczegółową dyskusję na ten temat niedawno: on dba.SE in this related question. Z przykładami, benchmarkami, dyskusjami i prognozami do nadchodzącej funkcji index-only scans in version 9.2.
W szczególności, klucz podstawowy na (x, y, z)
przyspieszy zapytań z warunkami na x
, (x,y)
lub (x,y,z)
optymalnie. Pomoże to również w zapytaniach pod numerami y
, z
, (y,z)
lub (x,z)
, ale w znacznie mniejszym stopniu.
Jeśli chcesz przyspieszyć kwerendy w tych ostatnich kombinacjach, możesz utworzyć jeden lub więcej dodatkowych indeksów.
Yes:
PostgreSQL automatycznie tworzy unikatowy indeks gdy UNIQUE lub klucz podstawowy jest zdefiniowany dla tabeli. Indeks obejmuje kolumny, które składają się z klucza głównego lub ograniczenia unikalnego (indeks wielokolumnowy, jeśli jest to stosowne) i jest mechanizmem egzekwującym ograniczenie.
Myślę, że pytanie brzmiało, czy każda kolumna ma własny indeks. –
Zgadzam się. Pytanie nie dotyczy tego, czy 1 indeks wielokolumnowy jest tworzony automatycznie, ale dobrze, jeśli tworzone są 3 pojedyncze indeksy kolumnowe. Odpowiedź brzmi: nie. Twoja odpowiedź jest nadal istotna, ponieważ dostarcza informacji uzupełniających, oczywiście po ich edycji. W rzeczywistości odpowiedź @ dondi-michael-stroma jest bardziej trafna niż ta, którą wybrał pierwotny wnioskodawca. – Chucky
Nie, otrzymujesz jeden indeks dla klucza podstawowego z trzema kolumnami.
- 1. Podstawowy klucz złożony w django
- 2. Oracle złożony klucz podstawowy/klucz obcego pytania
- 3. Jak dodać złożony klucz podstawowy do tabeli
- 4. Jak zdefiniować złożony klucz podstawowy w SQL?
- 5. Jak utworzyć złożony klucz podstawowy (adnotacja java)
- 6. Ebean - Podstawowy klucz złożony zawierający klucze obce
- 7. Złożony klucz podstawowy, klucz obcy. Odniesienie do obiektu lub klucza?
- 8. Klucz złożony w JPA
- 9. Jak utworzyć złożony klucz podstawowy w SQL Server 2008
- 10. Podstawowy klucz złożony w tabeli Zmienna w przechowywanej procedurze
- 11. Dodaj klucz podstawowy do tabeli PostgreSQL tylko, jeśli nie istnieje
- 12. Jak zdefiniować klucz złożony w Persistent
- 13. PostgreSQL: jak zwrócić typ złożony
- 14. Podstawowy klucz kontra kluczowego
- 15. Klucz podstawowy wielokolumnowy MySQL
- 16. klucz podstawowy naruszenia ograniczenia
- 17. MERGE Naruszenie klucz podstawowy
- 18. JPA kompozytowa klucz podstawowy
- 19. ScalaQuery wielokrotny klucz podstawowy i klucz obcy
- 20. iOS - Klucz podstawowy zestawu danych atrybut klucz
- 21. Czy klucz UUID jako klucz podstawowy w PostgreSQL daje niepoprawną wydajność indeksu?
- 22. Usunąć klucz podstawowy w datatable
- 23. Klucz podstawowy klastrowany vs nieklastrowany
- 24. Usuń klucz podstawowy w MySQL
- 25. Szyny - Zastąp klucz podstawowy has_one
- 26. jak kropla nienazwany klucz podstawowy
- 27. Jak usunąć wiele wierszy z 2 kolumn jako złożony klucz podstawowy w MySQL?
- 28. Jak odwzorować klucz złożony jednostki w WZP?
- 29. MySQL - unikalny klucz złożony z datetime
- 30. Złożony klucz do Cache guawy (zmiany biegów)
Masz na myśli, że MySQL tworzy ** trzy * * indeksy *? Brzmi okropnie dziwnie –