PosrgresSQL. Ключи, индексы.

Krisha

pain in the neck
PosrgreSQL. Ключи, индексы.

Кинте, плиз, ссылочкой, где подробно описано про индексы и ключи, а так же про primary key's в PosrgreSQL. В мане че-то как-то вяленько или не нашел.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
если не хочешь получить ссылочку на описание команды CREATE INDEX, то уточни, что именно интересует.
 

Krisha

pain in the neck
Sad Spirit
Сами напросились :)
Например есть таблица под мускулем:
PHP:
CREATE TABLE chapters (
  ChapterID int unsigned NOT NULL auto_increment,
  ChapterOrder int unsigned NOT NULL default '0',
  ChapterName varchar NOT NULL default '',
  PRIMARY KEY  (ChapterID),
);
Необходимо эту таблицу перегнать под PosrgreSQL. При этом создать:

1. автоинкрементное поле ChapterID и сделать его первичным ключем
2. сделать поле ChapterOrder уникальным
3. сделать поле ChapterName уникальным

Интересует так же теория, а не синтаксис создания индексов, чтобы правильно проиндексировать таблицу.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Krisha
1. автоинкрементное поле ChapterID и сделать его первичным ключем
Про автоинкремент есть в FAQ'е, пересказ FAQ'а --- услуга платная.

Первичный ключ запишется абсолютно так же, как в MySQL, то есть PRIMARY KEY.

2. сделать поле ChapterOrder уникальным
3. сделать поле ChapterName уникальным
Либо CREATE UNIQUE INDEX, либо
Код:
CREATE TABLE chapters (
  ...
  ChapterOrder integer NOT NULL default 0 CHECK (ChapterOrder >= 0),
  ChapterName varchar NOT NULL default '',
  CONSTRAINT chapterorder_unique UNIQUE (ChapterOrder),
  CONSTRAINT chaptername_unique UNIQUE (ChapterName)
);
но вообще-то те же яйца, т.к. будут созданы уникальные индексы.

Интересует так же теория, а не синтаксис создания индексов, чтобы правильно проиндексировать таблицу.
посмотри мою статью по настройке производительности.
 

Krisha

pain in the neck
Автор оригинала: Sad Spirit
Про автоинкремент есть в FAQ'е, пересказ FAQ'а --- услуга платная.
Неужели ты думаешь, что я его не читал ? :)

Первичный ключ запишется абсолютно так же, как в MySQL, то есть PRIMARY KEY.
Либо CREATE UNIQUE INDEX, либо
Код:
CREATE TABLE chapters (
  ...
  ChapterOrder integer NOT NULL default 0 CHECK (ChapterOrder >= 0),
  ChapterName varchar NOT NULL default '',
  CONSTRAINT chapterorder_unique UNIQUE (ChapterOrder),
  CONSTRAINT chaptername_unique UNIQUE (ChapterName)
);
но вообще-то те же яйца, т.к. будут созданы уникальные индексы.
Я же прошу ссылку на подробное описание, вот что такое CONSTRAINT к примеру где читать ?

Из фака:
Замечание: До версии 7.3 поле типа serial автоматически объявлялось уникальным, то есть по нему создавался индекс.
А теперь ?

посмотри мою статью по настройке производительности.
Спасибо, обязательно почитаемс.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Krisha
Я же прошу ссылку на подробное описание, вот что такое CONSTRAINT к примеру где читать ?
В описании языка SQL?..

Нет, я серьёзно. Если до этого только с мысклём работал, почитай нормальную книгу по SQL, узнаешь много нового.

Там же пример написан... Щас не объявляется.
 

Krisha

pain in the neck
Автор оригинала: Sad Spirit
Нет, я серьёзно. Если до этого только с мысклём работал, почитай нормальную книгу по SQL, узнаешь много нового.
Я с этого и начал, меня интересует теория + реализация в pg.
НИ фак ни ман этого в полной мере не раскрывают, поэтому я и попросил ссыллочку.
 
Сверху