انتخاب نوع شاخص مناسب برای نیازهای شما به این معنی است که پایگاه داده شما کارآمدتر کار می کند.
ایندکس به SQL Server کمک می کند تا داده ها را از ردیف ها به سرعت بازیابی کند. نمایهها مانند فهرست مطالب در ابتدای کتابها کار میکنند و به شما امکان میدهند صفحهای را که یک موضوع در آن است، به سرعت جستجو کنید. بدون ایندکس، SQL Server باید تمام سطرهای یک جدول را اسکن کند تا رکوردی پیدا کند.
دو نوع شاخص در SQL Server وجود دارد: خوشه ای و غیر خوشه ای. تفاوت بین شاخص های خوشه ای و غیر خوشه ای و دلیل اهمیت آنها را بیابید.
فهرست خوشه ای در SQL Server
در یک نمایه خوشهای، ردیفهای داده به صورت فیزیکی بر اساس مقدار کلید ذخیره میشوند. از آنجایی که فهرست شامل جدول است و فقط میتواند ردیفها را به یک ترتیب مرتب کند، میتوانید فقط یک فهرست خوشهبندی شده در هر جدول ایجاد کنید.
در حالی که نمایهها بازیابی ردیفها را در یک محدوده سریعتر میکنند، عبارات INSERT و UPDATE ممکن است کند باشند زیرا بهینهساز پرس و جو فهرست را به ترتیب اسکن میکند تا زمانی که شاخص هدف را پیدا کند.
فهرست غیر خوشه ای در SQL Server
یک شاخص غیر خوشهای حاوی مقادیر کلیدی است که ورودی آن اشارهگری به نام row locator است. برای جداول خوشه ای (جدول هایی با نمایه خوشه ای)، اشاره گر به کلیدی در نمایه خوشه ای اشاره می کند که به نوبه خود به ردیف در جدول اشاره می کند. برای ردیفهایی که شاخص خوشهای ندارند، نشانگر مستقیماً به ردیف جدول اشاره میکند.
چگونه در SQL Server یک Clustered Index ایجاد کنیم
هنگامی که یک جدول با یک کلید اصلی ایجاد می کنید، SQL Server به طور خودکار یک کلید فهرست خوشه ای بر اساس آن کلید اصلی ایجاد می کند. اگر کلید اصلی ندارید، می توانید عبارت زیر را برای ایجاد یک کلید فهرست خوشه ای اجرا کنید.
CREATE CLUSTERED INDEX <index name>
ON TABLE <table_name>(column_name)
در این عبارت، نام ایندکس، نام جدول برای ایجاد آن و نام ستون برای استفاده در ایندکس را مشخص میکنید.
اگر یک کلید اصلی به جدولی اضافه کنید که از قبل یک فهرست خوشه ای دارد، SQL Server یک فهرست غیر خوشه ای با آن ایجاد می کند.
برای ایجاد یک نمایه خوشهای که شامل ستون کلید اصلی نباشد، ابتدا باید محدودیت کلید اصلی را حذف کنید.
USE database_name
ALTER TABLE table_name
DROP CONSTRAINT pk_name
GO
حذف محدودیتهای کلید اصلی همچنین باعث حذف ایندکس خوشهای میشود که به شما امکان میدهد یک فهرست سفارشی ایجاد کنید.
نحوه ایجاد یک فهرست غیر خوشه ای در SQL Server
برای ایجاد یک نمایه غیر خوشه ای از عبارت زیر استفاده کنید.
CREATE INDEX <index name>
ON TABLE <table_name>(column_name)
شما همچنین می توانید از کلمه کلیدی NONCLUSTERED به صورت زیر استفاده کنید:
CREATE [NONCLUSTERED] INDEX <index name>
ON TABLE <table_name>(column_name)
این عبارت یک نمایه غیر خوشه ای در جدولی که شما مشخص کرده اید ایجاد می کند و شامل ستونی است که نشان می دهید.
در صورت تمایل می توانید ستون ها را به ترتیب صعودی (ASC) یا نزولی (DESC) مرتب کنید.
CREATE [NONCLUSTERED] INDEX <index name>
ON TABLE <table_name>(column_name ASC/DESC)
کدام شاخص را باید انتخاب کنید؟
هر دو شاخص خوشه ای و غیر خوشه ای زمان پرس و جو را بهبود می بخشند. اگر بیشتر پرس و جوهای شما عملیات SELECT در چندین ستون در جدول هستند، شاخص های خوشه ای سریعتر هستند. با این حال، برای عملیات INSERT یا UPDATE، ایندکس های غیر خوشه ای سریعتر هستند زیرا بهینه ساز پرس و جو می تواند ستون را مستقیماً از نمایه پیدا کند.
همانطور که می بینید، این شاخص ها برای پرس و جوهای مختلف SQL بهترین کار را دارند. بنابراین، اکثر پایگاههای داده SQL از داشتن حداقل یک نمایه خوشهای و شاخصهای غیرخوشهای برای ستونهایی که به طور منظم بهروزرسانی میشوند، سود میبرند.
اهمیت شاخص ها در SQL Server
شاخص های خوشه ای و غیر خوشه ای منجر به عملکرد بالاتر پرس و جو می شوند. هنگامی که یک پرس و جو را اجرا می کنید، بهینه ساز پرس و جو فهرست را برای مکان ذخیره سازی یک ردیف اسکن می کند و سپس اطلاعات را از آن مکان بازیابی می کند. این بسیار سریعتر از اسکن تمام ردیف های جدول است.
همچنین میتوانید از نمایههای غیر خوشهای برای حل بنبستهای جستجوی نشانکها با ایجاد یک نمایه غیرخوشهای برای ستونهایی که پرسوجوها به آنها دسترسی دارند، استفاده کنید.