PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как и защо да добавя първични ключове към моята таблица на SQL база данни, когато вече имам индекс

Първичният ключ е ограничение, което указва, че стойностите в неговата колона(и) трябва да бъдат (взаимно) уникални и да не са нулеви. Това е така, за да може да се гарантира уникалното идентифициране на всеки ред в таблицата, което е най-полезно, когато искате да създадете външни ключове, които препращат към тази таблица. Все още си струва да имате, ако нямате други таблици, тъй като това ще предотврати таблицата ви да изпадне в лошо състояние, когато например имате повече от една от една и съща изходна стойност на определена дата.

Полетата за първичен ключ почти винаги ще имат индекс върху тях, както и че се използват често за справки и JOIN, но двете концепции са отделни.

Някои СУБД (напр. MySQL, SQL Server) автоматично създават клъстерен индекс на първичния ключ, което означава, че данните в таблицата се сортират на диска по полето(ята), съдържащо първичния ключ, за да направят общите операции по-горе още по-бързи. Postgres обаче не прави това по подразбиране.

Можете да посочите първичния ключ при създаване на таблица, като използвате следния синтаксис:

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

Можете също така да добавите ново, автоматично увеличаващо се цяло числово поле, което да действа като първичен ключ (обикновено наричан сурогатен ключ или изкуствен ключ ). Може да искате да направите това, ако нямате други добри кандидати във вашите елементи с данни, но може да има и други предимства (потенциално по-бързи 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. Как да поставите psql на пътя, когато използвате Postgres.app на OS X?

  2. IServiceCollection не съдържа дефиниция или разширение за AddNpgsql

  3. Отказано е разрешение за връзка

  4. Цветове в подканата на psql

  5. Jboss AS7 набор от връзки няма да се свърже отново