Ключът е просто нормален индекс. Един начин над опростяването е да го мислим като каталог с карти в библиотека. Насочва MySQL в правилната посока.
Уникален ключ също се използва за подобрена скорост на търсене, но той има ограничението, че не може да има дублирани елементи (няма две x и y, където x не е y и x ==y).
Ръководството го обяснява по следния начин:
УНИКАЛЕН индекс създава ограничение, така че всички стойности в индекса трябва да бъдат различни. Възниква грешка, ако се опитате да добавите нов ред с akey стойност, която съответства на съществуващ ред. Това ограничение не се прилага за NULL стойности, с изключение на механизма за съхранение на BDB. За други машини, индексът UNIQUE позволява множество NULL стойности за колони, които могат да съдържат NULL. Ако посочите стойност на префикс за колона в УНИКАЛЕН индекс, стойностите на колоната трябва да са уникални в рамките на префикса.
Първичният ключ е „специален“ уникален ключ. По същество това е уникален ключ, с изключение на това, че се използва за идентифициране на нещо.
Ръководството обяснява как се използват индексите като цяло:тук.
В 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);
Редактиране:кодът по-горе е тестван за правилен; обаче подозирам, че има много по-добър синтаксис за това. Измина известно време, откакто използвах SQL сървър и явно съм забравил доста :).