Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Primary Key


Автор: JavaCraft 9.5.2007, 01:18
PostgreSQL.
Нужна цитата или статья в которой недвусмысленно разъясняется какова природа "имплицитного" индекса первичного ключа.

Непонятки вот из-за чего.
Насколько я понимаю PK, это просто ограничение, не имеющее к индексам прямого отношения. Например, это ограничение можно удалить и создать заново, не трогая индексов.
Для индексации обычно строят явный уникальный индекс независимо от первичного ключа, по темже полям.

Создаем таблицу с первичным ключем, но без индексов.
Получаем сообщение
 CREATE TABLE / PRIMARY KEY will create implicit index "PK_t2" for table "t2"

Постоен имплицитный индекс, который мы видим в менеджере как Ограничение с пиктограммой "ключик"
Никаких явных индексов нет.

При выполнении EXPLAIN в режиме
SET enable_seqscan=false;
видим такие строчки

"   {INDEXSCAN " ...
"Index Scan using "PK_t2" on t2  (cost=0.00..9.04 rows=45 width=6) (actual time=0.033..0.225 rows=136 loops=1)"

Если он считает PK индексом(пусть даже имплицитным), то какой метод поиска используется? Ведь нигде явно этот метод не указан.
Создается ли на диске индексный файл содержащий дерево этого индекса? Занимает ли он столько же места сколько обычный явный индекс? Насколько он производителен?

Если PK это просто ограничение, а не индекс, то тогда как понимать сию строчку? (Index Scan using "PK_t2")
Однако, если PK не просто ограничение, а сам себе индекс, то наверное второй(явный) уникальный индекс строить излишне?

Если кто в курсе приведите цитату и ссылку на страницу, где недвусмысленно написано по этому поводу?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)