SQLServerでのクラスター化インデックスと非クラスター化インデックスの作成



問題を排除するために楽器を試してください

SQL Serverには、2種類のインデックスがあります。クラスター化インデックスと非クラスター化インデックス。クラスター化インデックスと非クラスター化インデックスはどちらも同じ物理構造を持っています。さらに、どちらもBツリー構造としてSQLServerに格納されます。



クラスター化インデックス:

クラスター化リストは、テーブル内のレコードの物理ストレージを再配置する特定のタイプのインデックスです。 SQL Server内では、インデックスを使用してデータベース操作を高速化し、高いパフォーマンスを実現します。したがって、テーブルにはクラスター化インデックスを1つだけ含めることができます。これは通常、主キーで実行されます。クラスター化インデックスのリーフノードには、 「データページ」。 テーブルは、クラスター化インデックスを1つだけ所有できます。



理解を深めるために、クラスター化インデックスを作成しましょう。まず、データベースを作成する必要があります。



データベースの作成

データベースを作成するため。右クリック 「データベース」 オブジェクトエクスプローラーで、を選択します 「新しいデータベース」 オプション。データベースの名前を入力し、[OK]をクリックします。次の図に示すように、データベースが作成されました。

デザインビューを使用したテーブルの作成

次に、という名前のテーブルを作成します '社員' デザインビューを使用して主キーを使用します。下の図では、主に「ID」という名前のフィールドに割り当てており、テーブルにインデックスを作成していないことがわかります。



IDを主キーとする「Employee」という名前のテーブルを作成する

次のコードを実行してテーブルを作成することもできます。

USE [test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo]。[Employee]([ID] [int] IDENTITY(1,1)NOT NULL、[Dep_ID] [int] NULL、[Name] [ varchar](200)NULL、[email] [varchar](250)NULL、[city] [varchar](250)NULL、[address] [varchar](500)NULL、CONSTRAINT [Primary_Key_ID] PRIMARY KEY CLUSTERED([ID ] ASC)WITH(PAD_INDEX = OFF、STATISTICS_NORECOMPUTE = OFF、IGNORE_DUP_KEY = OFF、ALLOW_ROW_LOCKS = ON、ALLOW_PAGE_LOCKS = ON)ON [PRIMARY])ON [PRIMARY] GO

出力は次のようになります。

IDを主キーとする「Employee」という名前のテーブルを作成する

上記のコードは、という名前のテーブルを作成しました '社員' IDフィールド、主キーとしての一意の識別子。このテーブルでは、主キーの制約により、列IDにクラスター化インデックスが自動的に作成されます。テーブルのすべてのインデックスを表示する場合は、ストアドプロシージャを実行します 「sp_helpindex」。 次のコードを実行して、という名前のテーブルのすべてのインデックスを確認します。 '社員'。 このストアドプロシージャは、入力パラメータとしてテーブル名を取ります。

USEテストEXECUTEsp_helpindex従業員

出力は次のようになります。

「sp_helpindex」は、employeeテーブルのすべてのインデックスを表示します。

テーブルインデックスを表示する別の方法は、に移動することです。 「テーブル」 オブジェクトエクスプローラーで。テーブルを選択して使います。次の図に示すように、indexesフォルダーには、その特定のテーブルに関連するすべてのインデックスが表示されます。

テーブルへのすべてのインデックスの表示

これはクラスター化インデックスであるため、インデックスの論理的および物理的な順序は同じになります。これは、レコードのIDが3の場合、テーブルの3行目に格納されることを意味します。同様に、5番目のレコードのIDが6の場合、5に格納されます。thテーブルの場所。レコードの順序を理解するには、次のスクリプトを実行する必要があります。

USE [test] GO SET IDENTITY_INSERT [dbo]。[Employee] ON INSERT [dbo]。[Employee]([ID]、[Dep_ID]、[Name]、[email]、[city]、[address])VALUES( 8、6、N'Humbaerto Acevedo