برای ایجاد Column Stored Index ابتدا باید فیلدهای شرکت کننده در ایندکس را تعیین و پس از آن ایندکس را ایجاد نمایید. مثال زیر نحوه انجام اینکار را نمایش میدهد.
۱- برای شروع کار یک جدول جدید ایجاد میکنیم. این جدول دارای یک Primary Key است که با استفاده از Clustered Index ایجاد شده است. بدلیل اینکه جداول شما از قبل وجود دارند ممکن است این مرحله جزء کار شما نباشد.
USE tempdb
GO
IF OBJECT_ID(
'Employees'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
Employees
GO
CREATE
TABLE
Employees_ColumnBased
(
Code
INT
IDENTITY
CONSTRAINT
PK_Code
PRIMARY
KEY
,
FirstName NVARCHAR(50),
LastName NVARCHAR(80),
HireDate SMALLDATETIME,
City NVARCHAR(20)
)
GO
۲- در این مرحله تعدادی داده تستی در جدول درج میکنیم.
INSERT
INTO
Employees_ColumnBased (FirstName,LastName,HireDate,City)
VALUES
(N
'مسعود'
,N
'طاهری'
,
'۲۰۰۰-۰۱-۰۱'
,N
'میانه'
),
(N
'فرید'
,N
'طاهری'
,
'۲۰۰۳-۰۱-۰۱'
,N
'میانه'
),
(N
'احمد'
,N
'غفاری'
,
'۲۰۰۳-۰۱-۰۱'
,N
'میانه'
),
(N
'خدیجه'
,N
'افروزنیا'
,
'۲۰۰۰-۰۱-۰۱'
,N
'تهران'
),
(N
'مجید'
,N
'طاهری'
,
'۲۰۰۵-۰۱-۰۱'
,N
'تهران'
)
GO
INSERT
INTO
Employees_ColumnBased (FirstName,LastName,HireDate,City)
SELECT
FirstName,LastName,HireDate,City
FROM
Employees_ColumnBased
GO 10
۳- در این مرحله یک Column Stored Index به ازای فیلدهای مورد نیاز ایجاد میکنیم. لازم به ذکر است در SQL Server 2012 این نوع ایندکس به شکل Non Clustered Column Stored Index میباشد.
CREATE
NONCLUSTERED COLUMNSTORE
INDEX
IX_ColumnStore
ON
Employees_ColumnBased(FirstName,LastName,HireDate)
نکته مهمی که باید در ایجاد این نوع از ایندکسها در نظر گرفت این است که به دلیل افزایش Performance معمولاً در بیشتر مواقع این ایندکسها با توجه به کوئریهای شما ایجاد میگردند. بدین صورتکه
۱- لیست تمامی کوئریهای پر استفاده به ازای جدول مورد نظر را استخراج نمایید.
۲- کلیه فیلدهای مربوط به مرحله اول را استخراج نمایید.
۳- در صورتیکه فیلدهای استخراج شده در مرحله دوم جزء فیلدهای قابل شرکت در Column Stored Index باشند در ایندکس مورد نظر شرکت نمایند.
۴- در صورتیکه بخواهید Column Stored Index را به صورت ویژوالی در Management Studio ایجاد کافی است مراحل زیر را انجام دهید.