خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

تفاوت بین شاخص های خوشه ای و غیر خوشه ای در مایکروسافت SQL Server چیست؟

انتخاب نوع شاخص مناسب برای نیازهای شما به این معنی است که پایگاه داده شما کارآمدتر کار می کند.

ایندکس به SQL Server کمک می کند تا داده ها را از ردیف ها به سرعت بازیابی کند. نمایه‌ها مانند فهرست مطالب در ابتدای کتاب‌ها کار می‌کنند و به شما امکان می‌دهند صفحه‌ای را که یک موضوع در آن است، به سرعت جستجو کنید. بدون ایندکس، SQL Server باید تمام سطرهای یک جدول را اسکن کند تا رکوردی پیدا کند.

دو نوع شاخص در SQL Server وجود دارد: خوشه ای و غیر خوشه ای. تفاوت بین شاخص های خوشه ای و غیر خوشه ای و دلیل اهمیت آنها را بیابید.

فهرست خوشه ای در SQL Server

در یک نمایه خوشه‌ای، ردیف‌های داده به صورت فیزیکی بر اساس مقدار کلید ذخیره می‌شوند. از آنجایی که فهرست شامل جدول است و فقط می‌تواند ردیف‌ها را به یک ترتیب مرتب کند، می‌توانید فقط یک فهرست خوشه‌بندی شده در هر جدول ایجاد کنید.

در حالی که نمایه‌ها بازیابی ردیف‌ها را در یک محدوده سریع‌تر می‌کنند، عبارات INSERT و UPDATE ممکن است کند باشند زیرا بهینه‌ساز پرس و جو فهرست را به ترتیب اسکن می‌کند تا زمانی که شاخص هدف را پیدا کند.

فهرست غیر خوشه ای در SQL Server

یک شاخص غیر خوشه‌ای حاوی مقادیر کلیدی است که ورودی آن اشاره‌گری به نام row locator است. برای جداول خوشه ای (جدول هایی با نمایه خوشه ای)، اشاره گر به کلیدی در نمایه خوشه ای اشاره می کند که به نوبه خود به ردیف در جدول اشاره می کند. برای ردیف‌هایی که شاخص خوشه‌ای ندارند، نشانگر مستقیماً به ردیف جدول اشاره می‌کند.

مطلب مرتبط:   نحوه آپلود فایل ها در فضای ذخیره سازی Firebase با استفاده از React.js

چگونه در 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)

این عبارت یک نمایه غیر خوشه ای در جدولی که شما مشخص کرده اید ایجاد می کند و شامل ستونی است که نشان می دهید.

مطلب مرتبط:   چگونه با استفاده از phpMyAdmin به راحتی پایگاه های داده را مدیریت کنیم

در صورت تمایل می توانید ستون ها را به ترتیب صعودی (ASC) یا نزولی (DESC) مرتب کنید.

CREATE [NONCLUSTERED] INDEX <index name>
ON TABLE <table_name>(column_name ASC/DESC)

کدام شاخص را باید انتخاب کنید؟

هر دو شاخص خوشه ای و غیر خوشه ای زمان پرس و جو را بهبود می بخشند. اگر بیشتر پرس و جوهای شما عملیات SELECT در چندین ستون در جدول هستند، شاخص های خوشه ای سریعتر هستند. با این حال، برای عملیات INSERT یا UPDATE، ایندکس های غیر خوشه ای سریعتر هستند زیرا بهینه ساز پرس و جو می تواند ستون را مستقیماً از نمایه پیدا کند.

همانطور که می بینید، این شاخص ها برای پرس و جوهای مختلف SQL بهترین کار را دارند. بنابراین، اکثر پایگاه‌های داده SQL از داشتن حداقل یک نمایه خوشه‌ای و شاخص‌های غیرخوشه‌ای برای ستون‌هایی که به طور منظم به‌روزرسانی می‌شوند، سود می‌برند.

اهمیت شاخص ها در SQL Server

شاخص های خوشه ای و غیر خوشه ای منجر به عملکرد بالاتر پرس و جو می شوند. هنگامی که یک پرس و جو را اجرا می کنید، بهینه ساز پرس و جو فهرست را برای مکان ذخیره سازی یک ردیف اسکن می کند و سپس اطلاعات را از آن مکان بازیابی می کند. این بسیار سریعتر از اسکن تمام ردیف های جدول است.

همچنین می‌توانید از نمایه‌های غیر خوشه‌ای برای حل بن‌بست‌های جستجوی نشانک‌ها با ایجاد یک نمایه غیرخوشه‌ای برای ستون‌هایی که پرس‌و‌جوها به آنها دسترسی دارند، استفاده کنید.