مثالهای عملی
مثال 1: ساخت پایه روی ستون پرتکرار با CREATE NONCLUSTERED COLUMNSTORE INDEX
یک مسیر دسترسی اولیه برای جستوجوی پرتکرار ساخته میشود و سپس متادیتای آن کنترل میگردد. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE1', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE1;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE1
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE1
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E1
ON dbo.DemoNonclusteredColumnstoreE1(CustomerID, ProductID, SaleDate, Quantity, NetAmount);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE1');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE1
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E1 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: این الگو نقطه شروع است؛ در سامانه واقعی باید انتخاب ستون با Execution Plan و آمار مصرف تأیید شود. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 2: کلید مرکب برای جستوجوی چندشرطی با CREATE NONCLUSTERED COLUMNSTORE INDEX
دو ستون با ترتیب هدفمند در تعریف ایندکس قرار میگیرند تا شرطهای ترکیبی و مرتبسازی رایج پوشش داده شوند. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE2', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE2;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE2
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE2
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E2
ON dbo.DemoNonclusteredColumnstoreE2(SaleDate, ProductID, Quantity, NetAmount, RegionID);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE2');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE2
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E2 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: ستون سمت چپ کلید نقش تعیینکننده دارد و تغییر ترتیب ستونها میتواند شکل Seek را عوض کند. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 3: پشتیبانی از مرتبسازی نزولی با CREATE NONCLUSTERED COLUMNSTORE INDEX
تعریف ایندکس با ترتیب نزولی برای گزارشهایی بررسی میشود که تازهترین دادهها را در ابتدای نتیجه میخواهند. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE3', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE3;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE3
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE3
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E3
ON dbo.DemoNonclusteredColumnstoreE3(CustomerID, SaleDate, NetAmount, RegionID);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE3');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE3
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E3 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: جهت کلید زمانی مهمتر میشود که Query ترکیبی از چند ستون با جهتهای متفاوت داشته باشد. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 4: استفاده در شرط و اتصال جدولها با CREATE NONCLUSTERED COLUMNSTORE INDEX
نمونهای نزدیک به گزارش عملی ساخته میشود تا نقش ایندکس در Predicate و Join یا بازیابی ردیفهای هدف دیده شود. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE4', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE4;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE4
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE4
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E4
ON dbo.DemoNonclusteredColumnstoreE4(CustomerID, ProductID, SaleDate, Quantity, NetAmount);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE4');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE4
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E4 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: وجود ایندکس تضمین استفاده از آن نیست؛ Optimizer بر پایه آمار، تعداد ردیف و هزینه تخمینی تصمیم میگیرد. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 5: تنظیم گزینههای ساخت و نگهداری با CREATE NONCLUSTERED COLUMNSTORE INDEX
یکی از گزینههای متداول ساخت ایندکس مانند FILLFACTOR، SORT_IN_TEMPDB یا فشردهسازی در یک سناریوی کنترلشده نمایش داده میشود. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE5', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE5;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE5
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE5
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E5
ON dbo.DemoNonclusteredColumnstoreE5(SaleDate, ProductID, Quantity, NetAmount, RegionID);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE5');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE5
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E5 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: هر گزینه هزینه و پیشنیاز خود را دارد؛ مقدار مناسب باید با نسخه SQL Server، Edition و الگوی بار واقعی آزموده شود. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 6: رفتار با NULL و دادههای اختیاری با CREATE NONCLUSTERED COLUMNSTORE INDEX
دادهای دارای مقدار NULL وارد میشود تا اثر آن بر تعریف، انتخابپذیری و نتیجه Query روشن شود. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE6', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE6;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE6
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE6
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E6
ON dbo.DemoNonclusteredColumnstoreE6(CustomerID, SaleDate, NetAmount, RegionID) WHERE RegionID IS NOT NULL;
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE6');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE6
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E6 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: NULL مقدار عادی نیست و قواعد یکتایی، فیلتر و برآورد Cardinality را باید آگاهانه بررسی کرد. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 7: سناریوی مرزی با دامنه تاریخی با CREATE NONCLUSTERED COLUMNSTORE INDEX
یک بازه تاریخی و حجم منطقی داده برای نشاندادن اثر ترتیب کلید، فیلتر یا Segment Elimination به کار میرود. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE7', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE7;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE7
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE7
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E7
ON dbo.DemoNonclusteredColumnstoreE7(CustomerID, ProductID, SaleDate, Quantity, NetAmount);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE7');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE7
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E7 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: در بازههای بسیار بزرگ، بهروز بودن Statistics و هماهنگی نوع پارامتر با نوع ستون اهمیت ویژه دارد. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 8: گزارش سازمانی و ستونهای خروجی با CREATE NONCLUSTERED COLUMNSTORE INDEX
نمونه گزارش فروش یا عملیات با چند ستون خروجی ارائه میشود تا مرز میان کلید جستوجو و داده موردنیاز نمایش مشخص شود. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE8', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE8;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE8
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE8
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E8
ON dbo.DemoNonclusteredColumnstoreE8(SaleDate, ProductID, Quantity, NetAmount, RegionID);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE8');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE8
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E8 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: هدف کاهش خواندن صفحه و حذف عملیات اضافه است، نه افزودن همه ستونهای جدول به هر ایندکس. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 9: روش اشتباه و نسخه اصلاحشده با CREATE NONCLUSTERED COLUMNSTORE INDEX
یک خطای طراحی رایج ابتدا در Comment توضیح داده میشود و سپس تعریف اصلاحشده و قابل اجرا قرار میگیرد. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE9', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE9;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE9
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE9
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E9
ON dbo.DemoNonclusteredColumnstoreE9(CustomerID, SaleDate, NetAmount, RegionID);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE9');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE9
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E9 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: بازبینی نام، نوع داده، ترتیب ستون و قابلیتهای مجاز پیش از اجرای DDL از خطا و Downtime جلوگیری میکند. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.
مثال 10: کنترل نتیجه و سنجش کارایی با CREATE NONCLUSTERED COLUMNSTORE INDEX
پس از ساخت، نمای سیستمی و یک Query نمونه برای کنترل نوع ایندکس و آمادهسازی ارزیابی کارایی استفاده میشوند. در این مثال، هدف عملی افزودن نمای ستونی تحلیلی روی جدول Rowstore و ترکیب OLTP با گزارشگیری نزدیک به بلادرنگ است.
IF OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE10', N'U') IS NOT NULL
DROP TABLE dbo.DemoNonclusteredColumnstoreE10;
CREATE TABLE dbo.DemoNonclusteredColumnstoreE10
(
SaleID bigint IDENTITY(1,1) NOT NULL,
CustomerID int NOT NULL,
ProductID int NOT NULL,
SaleDate date NOT NULL,
Quantity int NOT NULL,
NetAmount decimal(14,2) NOT NULL,
RegionID smallint NULL
);
INSERT INTO dbo.DemoNonclusteredColumnstoreE10
(CustomerID, ProductID, SaleDate, Quantity, NetAmount, RegionID)
VALUES
(101, 10, '2026-07-01', 2, 150000.00, 1),
(102, 11, '2026-07-10', 1, 87000.00, 2),
(103, 10, '2026-07-20', 5, 390000.00, NULL);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_DemoNonclusteredColumnstore_E10
ON dbo.DemoNonclusteredColumnstoreE10(CustomerID, ProductID, SaleDate, Quantity, NetAmount);
SELECT name, type_desc, is_disabled
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'dbo.DemoNonclusteredColumnstoreE10');
SELECT ProductID, SUM(NetAmount) AS TotalAmount
FROM dbo.DemoNonclusteredColumnstoreE10
GROUP BY ProductID;
| نام یا شاخص کنترل | نوع مورد انتظار | نتیجه نمونه |
|---|
| IX_DemoNonclusteredColumnstore_E10 | NONCLUSTERED COLUMNSTORE | تعریف در نمای سیستمی قابل مشاهده است و Query کنترل بدون خطای ساختاری اجرا میشود. |
نکته کاربردی: نتیجه نهایی باید با Actual Execution Plan، STATISTICS IO و زمان اجرا در محیط آزمایشی مقایسه شود. برای ساخت ایندکس ستونی غیرخوشهای همچنین باید انتخاب ستونهای تحلیلی، کنترل فضای کپی ستونی و اثر نگهداری بر تراکنشها را در بازبینی نهایی ثبت کرد.