Ключ просто нормальный индекс. Путем упрощения следует подумать об этом, как о карточном каталоге в библиотеке. Он указывает MySQL в правильном направлении.
Уникальный ключ также используется для улучшения скорости поиска, но имеет ограничение на то, что не может быть дублированных элементов (нет двух x и y, где x не равно y и x == y).
manual объясняет это следующим образом:
УНИКАЛЬНЫЙ индекс создает ограничение такое, что все значения в индексе должны быть различны. Произошла ошибка, если вы попытаетесь добавить новую строку с ключом , который соответствует существующей строке. Это ограничение не применяется к значениям NULL, за исключением механизма хранения BDB. Для других двигателей индекс UNIQUE допускает множество значений NULL для столбцов, которые могут содержать NULL. Если вы укажете префиксное значение для столбца в индексе UNIQUE, значения столбца должны быть уникальными в префиксе.
Первичный ключ - это «специальный» уникальный ключ. В основном это уникальный ключ, за исключением того, что он используется для определения чего-то.
В руководстве объясняется, как используются индексы в целом: here.
В MSSQL концепции схожи. Существуют индексы, уникальные ограничения и первичные ключи.
непроверенная, но я считаю, что MSSQL эквивалент:
CREATE TABLE tmp (
id int NOT NULL PRIMARY KEY IDENTITY,
uid varchar(255) NOT NULL CONSTRAINT uid_unique UNIQUE,
name varchar(255) NOT NULL,
tag int NOT NULL DEFAULT 0,
description varchar(255),
);
CREATE INDEX idx_name ON tmp (name);
CREATE INDEX idx_tag ON tmp (tag);
Edit: код выше проверяется, чтобы быть правильным; однако я подозреваю, что для этого есть гораздо лучший синтаксис. Прошло некоторое время с тех пор, как я использовал SQL-сервер, и, видимо, я совсем забыл :).
связаны: [? KEY ключевое слово MYSQL в] (http://stackoverflow.com/q/924265/697449) В основном 'KEY' является синонимом' INDEX'. –