Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=6703568&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 12:43:43 2016
Кодировка: Windows-1251
[SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
pechkin

Рег.: 01.06.2006
Сообщений: 306
Из: GATech
Рейтинг: 3
  [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT
      06.10.2007 10:40
 


 
code:
create table test_1 ( id number PRIMARY KEY, value varchar2(100) )


vs.

code:
create table test_2 ( id number NOT NULL, value varchar2(100) ) CREATE UNIQUE INDEX test_i_id ON test_2 (id)


Собственно, в чем разница между primary key и not null + unique constraint (БД Oracle)?

pechkin

Рег.: 01.06.2006
Сообщений: 306
Из: GATech
Рейтинг: 3
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: pechkin]
      06.10.2007 10:42
 

И что из них предпочтительнее использовать?

penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: pechkin]
      06.10.2007 11:02
-1

1) Афаик UNIQUE и INDEX - разные вещи, и UNIQUE не включает в себя INDEX... по крайней мере, в Postres-е.
2) PRIMARY означает, что это - идентификатор строк. А UNIQUE+INDEX - что по этому полю будем искать, и что его значения не повторяются, логически это совсем разные вещи, так что для идентификатора PRIMARY - тру.
3) В MySQL для PRIMARY можно сделать auto_increment (в постгресе вроде как последовательность можно вообще какую угодно и на что угодно сделать, но я могу и ошибаться)



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
pechkin

Рег.: 01.06.2006
Сообщений: 306
Из: GATech
Рейтинг: 3
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: penartur2]
      06.10.2007 11:53
 

Quote:

UNIQUE и INDEX - разные вещи, и UNIQUE не включает в себя INDEX



Т.е. ты хочешь сказать, что нельзя написать
code:
CREATE UNIQUE INDEX test_i_id ON test_2 (id)
? В oracle можно.

Мой вопрос собстенно был в том, что когда поле является PRIMARY KEY, то оно должно быть уникальным и не быть NULL + по нему можно быстро найти нужную строку в таблице => это поле должно быть еще и проиндексированно (я так думаю).
Собственно вопрос про равнозначность PRIMARY KEY и UNIQUE+NOT NULL.

DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31421
Рейтинг: 8953
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: pechkin]
      06.10.2007 12:48
 

primary key - помечает для всего мира (в том числе и для автоматизированных утилит), что именно по этому полю происходит идентификация записи

johnny_bee
bluesman

Рег.: 25.10.2002
Сообщений: 877
Рейтинг: 44
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: penartur2]
      06.10.2007 12:58
2

Quote:


1) Афаик UNIQUE и INDEX - разные вещи, и UNIQUE не включает в себя INDEX... по крайней мере, в Postres-е.




Вранье, как раз включает. При создании unique поля создается неявный индекс.

В постгре разница между primary и not null + unique + index только в том, что в первом случае поле добавляется в список ключей и при foreign key на эту таблицу постгря попытается сама понять, по какому полю искать.
вся остальная реализвация идентична.

penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: pechkin]
      06.10.2007 15:43
-1

В ответ на:

Т.е. ты хочешь сказать, что нельзя написать



Я хочу сказать, что если ты сделаешь поле UNIQUE, то поск по нему все равно будет осуществляться полным перебором, так что надо делать поле и UNIQUE, и INDEX-ом.



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: johnny_bee]
      06.10.2007 15:44
 

В ответ на:

Вранье, как раз включает. При создании unique поля создается неявный индекс



Мы тоже так думали, пока анализатор запросов не спросили. И не увидели, что если поле unique - идет полный перебор, а еслидополнительно явно сделать его index-ом - поиск идет по дереву.



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
Burjui
Pooh-Bah

Рег.: 26.11.2005
Сообщений: 2416
Рейтинг: 3784
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: pechkin]
      06.10.2007 18:06
1


 
В ответ на:

Собственно, в чем разница между primary key и not null + unique constraint (БД Oracle)?




Судя по этому:

 
В ответ на:

A primary key constraint combines a NOT NULL and unique constraint in one declaration




вообще ничем.

botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: penartur2]
      07.10.2007 03:15
 

В ответ на:

Мы тоже так думали, пока анализатор запросов не спросили. И не увидели, что если поле unique - идет полный перебор, а еслидополнительно явно сделать его index-ом - поиск идет по дереву.




доркументация постгреса с тобой не согласна
В ответ на:


there's no need to manually create indexes on unique columns; doing so would just duplicate the automatically-created index.








Хватит дрочить на рейтинги
johnny_bee
bluesman

Рег.: 25.10.2002
Сообщений: 877
Рейтинг: 44
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: penartur2]
      07.10.2007 14:21
1

Quote:

Мы тоже так думали, пока анализатор запросов не спросили. И не увидели, что если поле unique - идет полный перебор, а еслидополнительно явно сделать его index-ом - поиск идет по дереву.





Как идет поиск - через seq scan или index scan - зависит от кучи факторов: как запрос составлен, сколько записей в таблице, когда был сделан вакуум, какие цены на сканы, как geqo настроен и т.д.

индекс он создает и когда надо использует.

penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: johnny_bee]
      07.10.2007 15:59
 

Таблица вида Id PRIMARY KEY, Field UNIQUE, с тысячей записей. SELECT * FROM table WHERE Field = 1234 - полный скан. Если тут же сделать CREATE INDEX - поиск по индексу.



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
pechkin

Рег.: 01.06.2006
Сообщений: 306
Из: GATech
Рейтинг: 3
  Re: [SQL] PRIMARY KEY vs. UNIQUE CONSTRAINT [re: penartur2]
      07.10.2007 21:37
 

Quote:

A primary key constraint combines a NOT NULL and unique constraint in one declaration



Спасибо, Burjui!

Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
1 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в