PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak i dlaczego dodać klucze podstawowe do mojej tabeli bazy danych SQL, gdy mam już indeks?

Klucz podstawowy to ograniczenie określające, że wartości w jego kolumnach muszą być (wzajemnie) unikatowe i nie mogą mieć wartości null. Ma to na celu zagwarantowanie jednoznacznej identyfikacji każdego wiersza w tabeli, co jest najbardziej przydatne podczas tworzenia kluczy obcych, które odwołują się do tej tabeli. Nadal warto ją mieć, jeśli nie masz innych tabel, ponieważ zapobiegnie to pogorszeniu stanu tabeli, gdy na przykład masz więcej niż jedną taką samą wartość źródłową w określonym dniu.

Pola klucza podstawowego prawie zawsze będą miały na sobie indeks, a także są często używane do wyszukiwania i JOIN, ale te dwie koncepcje są oddzielne.

Niektóre systemy DBMS (np. MySQL, SQL Server) automatycznie tworzą indeks klastrowy na kluczu podstawowym, co oznacza, że ​​dane w tabeli są sortowane na dysku według pól składających się na klucz podstawowy, aby powyższe operacje były jeszcze szybsze. Jednak postgres nie robi tego domyślnie.

Możesz określić klucz podstawowy podczas tworzenia tabeli, używając następującej składni:

create table datatable 
(
    date date, 
    yesterday real, 
    today real, 
    tomorrow real, 
    reading real, 
    source varchar,
    PRIMARY KEY (source, date)
)

Możesz także dodać nowe, automatycznie zwiększające się pole liczb całkowitych, które będzie działać jako klucz podstawowy (nazywany zwykle kluczem zastępczym lub sztuczny klawisz ). Możesz to zrobić, jeśli nie masz żadnych innych dobrych kandydatów w swoich elementach danych, ale może to również przynieść inne korzyści (na przykład potencjalnie szybsze JOIN).

create table datatable 
(
    id serial primary key,
    date date, 
    yesterday real, 
    today real, 
    tomorrow real, 
    reading real, 
    source varchar
)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podzielić ogromną (95Mb) tablicę JSON na mniejsze porcje?

  2. pg_stat_activity - jak zobaczyć bieżącą aktywność wewnątrz uruchomionej procedury składowanej

  3. C# łączenie się z bazą danych postgres

  4. Jak przerwać zapytanie RPostgresql w R

  5. Dlaczego nie mogę wysyłać zapytań bezpośrednio do jsonb_array_elements?