web-dev-qa-db-ja.com

データベース:主キー、クラスター化または非クラスター化

SQL Server 2008でデータベースを作成していますが、

CREATE TABLE Users
(
    U_Id INT NOT NULL
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Email VARCHAR(200)
    Password VARCHAR(50)
)

U_Idを主キーにします。私はどう違いますか?

 CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

この

 CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

この

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

それぞれをいつ使用するか?

私はいくつかの記事を読みましたが、それはまだ私には不明です。誰かが簡単な説明をくれますか?

35
YtotheZ

次のステートメント:

CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

これと同じです:

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

テーブルデータの物理性は、インデックスのoneでのみ順序付けることができ、デフォルトでは、そのインデックスはプライマリキーに使用されるインデックスです(プライマリキーの一意制約は常にインデックスでサポートされます)。

テーブルデータの順序を他のインデックスに従って保存する場合は、次のように主キーを作成する必要があります。

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

次に、次を使用してクラスター化インデックスを作成します。

CREATE CLUSTERED INDEX ix_Email ON Users (Email); 
42
PAC