برای ایجاد 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 ایجاد کافی است مراحل زیر را انجام دهید.