|
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) Афаик 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
|
|
|
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
|
|
|
В ответ на:
Т.е. ты хочешь сказать, что нельзя написать
Я хочу сказать, что если ты сделаешь поле 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
|
|
|
В ответ на:
Собственно, в чем разница между 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
|
|
|
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!
|
|