Wydajność PK - złożone czy identyfikatory

Wydajność PK - złożone czy identyfikatory
UnlimitedPL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 231
0

Hej! Zastanawia mnie pewien problem. Co jest wydajniejsze dla bazy: PK stworzony z kilku kolumn (np 2) czy dodanie jakiegoś identyfikatora żeby PK było jedną kolumną (np int, uuid)?
Wydajniejsze czyli np insertując, updateując czy cokolwiek. Bazie prościej jest wyszukać takowy wiersz jeśli mamy PK złożony czy pojedynczy? Pomijam tutaj oczywiście kwestię rozmiaru tabelki bo wiadomo dodatkowa kolumna == więcej zajmuje miejsca na dysku. Zarówno z indexowaniem jak i bez - ale podejrzewam że i tak w jednym jak i w drugim przypadku to samo będzie bardziej wydajne. Nigdzie nie mogłem znaleźć odpowiedzi w guglach. Dzięki i szczęśliwego nowego roku!

M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
1

Identyfikatory identity,auto_increment etc.

UnlimitedPL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 231
0

Czyli jeśli nie zależy nam na tym ile będzie zajmować baza, a na wydajności to wszędzie tworzymy kolumnę z identyfikatorami by PK składał się z jednej kolumny?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
2

id ma tę przewagę nad PK złożonym z trzech kolumn, że przy pisaniu where id = 1 podajesz jedną kolumnę a nie trzy.
A teraz idę spać

UnlimitedPL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 231
0

to po co się robi klucze złożone skoro traci się na nich wydajność?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

a ile widziałeś złożonych PK w realnie działających systemach a nie na wykładzie na studiach?

M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
1

@abrakadaber jest duzo wiecej argumentow niz tylko where=, zwiazanych z wydajnoscia.Ciezko mi znalezc argument przemawiajacy za kluczami zlozonymi, naturalnymi.

UnlimitedPL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 231
0

Dzięki za podzielenie się doświadczeniem i wiedzą :)

  • Rejestracja: dni
  • Ostatnio: dni
0

Hmm klucz kompozytowy wiele razy widziałem jako wymuszeniu unikalności w tabeli a co za tym idzie relacjach tabel. Faktycznie jest rzadkością, ale jednak pojawia się.
Natomiast PK bedące identyfikatorem ma duże znaczenie dla wydajności w przeszukiwaniu danych, joinach a także w tworzeniu indeksów nieklsatrowych :)

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

do wymuszania unikalności to jest indeks unikalny a ni PK

  • Rejestracja: dni
  • Ostatnio: dni
0

No tylko UNIQUE zapewni Ci unikatowość w ramach tabeli a klucz główny kompozytowy zachowa unikatowość na relacji w innej tabeli z kluczem obcym...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.