Подтвердить что ты не робот

В чем разница между первичным ключом и индексом

Может ли кто-нибудь сказать мне, в чем разница между первичным ключом и ключевым ключом. А когда использовать что?

4b9b3361

Ответ 1

Первичный ключ - это особый тип индекса:

  • может быть только один;
  • он не может быть нулевым; и
  • он должен быть уникальным.

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

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

Оба этих индекса (фамилия и отдел) будут запрещать NULL (возможно) и разрешать дубликаты (почти наверняка), и они были бы полезны для ускорения запросов, ищущих кого угодно (например) фамилию "Corleone", или работает в отделе "HitMan".

Ответ 2

Ключ (минимальный суперкласс) - это набор атрибутов, значения которых уникальны для каждого кортежа (каждая строка в таблице в некоторый момент времени).

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

Ключи часто являются хорошими кандидатами для индексирования, и некоторые СУБД автоматически создают индексы для ключей, но это не обязательно.

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

Ответ 3

База данных Oracle использует ограничение UNIQUE или PRIMARY KEY для целостности таблицы, создавая уникальный индекс для уникального ключа или первичного ключа. Этот индекс автоматически создается базой данных, когда ограничение включено.

Вы можете явно создавать индексы (за пределами ограничений целостности) с помощью оператора SQL CREATE INDEX .

Индексы могут быть уникальными или не уникальными. Уникальные индексы гарантируют, что две строки таблицы не имеют повторяющихся значений в ключевом столбце (или столбцах). Необязательные индексы не налагают это ограничение на значения столбца.

Используйте оператор CREATE UNIQUE INDEX для создания уникального индекса.

Указание индекса, связанного с ограничением

Если вам требуется более явный контроль над индексами, связанными с ограничениями UNIQUE and PRIMARY KEY , база данных позволяет вам:

1. Specify an existing index that the database is to use 
   to enforce the constraint
2. Specify a CREATE INDEX statement that the database is to use to create 
   the index and enforce the constraint

Эти параметры задаются с помощью предложения USING INDEX.

Пример:

 CREATE TABLE a (
 a1 INT PRIMARY KEY USING INDEX (create index ai on a (a1)));

http://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm

Ответ 4

Другие ответы определяют первичный ключ, но не первичный индекс.

Первичный индекс не является индексом первичного ключа.

Первичный индекс - это структура данных вашей таблицы, но только если ваша структура данных упорядочена по Первичному ключу, что позволяет осуществлять эффективный поиск без необходимости в отдельной структуре данных для поиска записей по Первичному ключу.

Все базы данных (о которых я знаю) имеют первичный ключ.

Не все базы данных имеют первичный индекс. Большинство из тех, которые не строят вторичный индекс по первичному ключу по умолчанию.