キーは単なる通常のインデックスです。単純化するのではなく、図書館のカード カタログのようなものと考えてください。これは、MySQL を正しい方向に向けます。
検索速度を向上させるために一意のキーも使用されますが、アイテムが重複しないという制約があります (x が y でなく、x == y である x と y が 2 つ存在しない)。
マニュアルでは次のように説明しています。
UNIQUE インデックスは、インデックス内のすべての値が個別でなければならないという制約を作成します。既存の行と一致するキー値を持つ新しい行を追加しようとすると、エラーが発生します。この制約は、BDB ストレージ エンジンを除き、NULL 値には適用されません。他のエンジンの場合、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);
編集: 上記のコードは正しいことがテストされています。ただし、それを行うためのはるかに優れた構文があると思います。SQLサーバーを使用してからしばらく経ちましたが、どうやらかなり忘れていました:)。