معرفی 4 نوع Index در SQL به همراه مثال

معرفی 4 نوع Index در SQL به همراه مثال

برای بررسی دقیق موضوع ایندکس در SQL می توانید این آموزش را تا پایان دنبال کنید زیرا در این بلاگ زیر و بم Index در SQL و دلایل استفاده از ایندکس در SQL را به صورت کامل بررسی کرده و 4 مورد از پرطرفدارترین نحوه ایندکس در SQL را مورد بحث قرار خواهیم داد. پس اگر آماده یک مقاله علمی کامل و کاربردی از ایندکس کردن در SQL هستید وقت را تلف کنید تا عملکرد بهتری در مدیریت و بهینه سازی دیتابیس های خود داشته باشید.
انواع ایندکس کردن در SQL

منظور از Index در SQL چیست؟

ایندکس در SQL به معنی استفاده از تکنیک و فاکتورهای است که می تواند به عنوان ابزاری برای شناسایی سریع ردیف هایی با مقادیر ستون خاص بکار گرفته شود. همچنین با توجه به مواردی که در مزیت ها بررسی خواهد شد می توان ادعا کرد که بهره وری از ایندکس در SQL نوعی بازاریابی سریع در موتورهای جستجو می باشد که می تواند مقدار داده مرود نیاز برای بررسی در سرور را به شدت کاهش دهد. 

مزیت های استفاده از ایندکس در SQL

  • بهبود عملکرد در Query
  • کاهش مقدار داده مورد نیاز سرور
  • امکان ایجاد محدودیت های منحصر بفرد در زمینه ایجاد دسته بندی ها
  • دسترسی بهتر به داده ها
  • افزایش سرعت عملیات اتصال از طریق مکان یابی سریع
  • سرعت زیاد در مراحل Sorting و Grouping 
  • امکان دسترسی سریع به داده های ردیف برای دستورات SELECT

4 روش پرکاربرد Index در SQL

روش های زیادی برای ایندکس کردن در SQL وجود دارد که در ادامه محبوب ترین آن ها را همراه با مثالی برای نحوه کاربرد این ایندکس ها مطالعه خواهید نمود:

1- Primary key index

Primary Key نوعی از ایندکس در SQL است که به عنوان یک فیلد و یا ترکیبی از چند فیلد در دیتابیس شما عمل خواهد کرد. این طریقه ایندکس همراه با Column های اصلی به صورت خودکار ایجاد شده و موجب می شود تا انحصاری بودن داده ا ارتقا یابد. به همین دلیل است که استفاده از ایندکس نوع Primaey Key می تواند تضمین تکراری نبود داده ها را به دنبال خود داشته باشد. از طرفی در این حالت می توانید از DBMS برای جستجو موارد خاص استفاده کرده و زمان خود را به صورت بهینه استفاده کنید تا پردازش دقیق تری را تجربه نمایید. نکته قابل توجه این است که در نهایت باید توجه کنید که در زمان ایجاد یک Relationship در Tables داخل یک Relational Database شما به صورت ضروری به یک Primary Key نیاز خواهید داشت. 
  • مثالی برای نحوه ایجاد Primary Key Index در SQL
با توجه به این مورد که کلیدهای Primary نمی توانند مقدار Null و یا تکراری داشته باشند می توان دستور زیر را نوعی از این ایندکس تلقی کرد:
SQL
Create Table Employees (
Employeeid int Primary Key,
FirstName Varchar (50),
LastName Varchar (50),
Hiredate Date
));
در این مثال مقدار Employeeid باید از ارقام منحصر بفرد برای هر یک از افرادی باشد که در شرکت شما کار می کنند. همچنین فاکتورهای FirstName ،LastName و HireDate را نیز باید برای کارمندان خود پر کرده باشید. با توجه کردن به مثال زیر می توانید دریابید که امکان ایجاد یک Primary Key برای چندین ستون را خواهید داشت:
SQL
Create Table Orders (
Orderid int,
Producttid int,
Primary Key (Orderid, Productid)
));
و باید دو ستون OrderID و ProductID مقادیر منحصر بفردی را داشته باشند. این تجربه به شما امکان می دهد تا جستجو و دسترسی بهتری به داده ها داشته باشید.

2- Unique key indicator

فقط یک عدد از این نوع ایندکس ها می توانند در هر جدول قرار بگیرند و ردیف ها را بر اساس مقدارهای موجود در یک یا چند نوع از ستون ها ترتیب دهند. به همین دلیل قادر هستید تا داده های مختلف در جدول را بر اساس مقادیر Column نمایه شده به صورت فیزیکی نظم دهید. از طرفی برای اهدافی مانند بازیابی بهینه داده ها، دسترسی های Sequential در زمانی که Query ها شامل اسکن محدوده یا بازیابی محدوده ای از مقادیر داده هستند تنظیم شده اند. همچنین علاوه بر موارد بالا این دسته از ایندکس ها برای بازیابی سریع رکوردهای خاص از مرتب کردن داده های فیزیکی در جدول به همراه Primary Key Column کمک می گیرند.
  • مثالی برای نحوه ایجاد Unique Key indicator در SQL
از دستور UNIQUE و با کمک دستور زیر برای اجرا یک جدول با این نوع از ایندکس ها استفاده کنید:
SQL
Create Table Employees (
Employeeid int Primary Key,
FirstName Varchar (50),
LastName Varchar (50),
Email Varchar (100) Unique
));
این جدول با 4 نمونه Employees ایجاد شده است که EmployeeID را به عنوان Primary Key در نظر گرفته شده است. از طرفی ستون Email را برای کلید محنصر بفرد به خاطر داشته باشید. پس اگر اکنون دو ایمیل مانند همدیگر وارد کنید پیام خطا به شما نمایش داده خواهد شد:
SQL
Insert into employees (Employeee, FirstName, LastName, Email) Values ​​(1, 'John', 'Doe', '[email protected]');
Insert into employees (Employeee, FirstName, LastName, Email) Values ​​(2, 'Jane', 'Doe', '[email protected]'); - This line will make an error.
در ادامه می توانید برای وارد کردن شاخص منحصر بفرد دیگری از ALTER TABLE مطابق دستور زیر استفاده کنید. توجه کنید که این کار در واقع اضافه کردن یک شاخص دستوری منحصر بفرد دیگر در جدول است:
SQL
Alter Table Employees
Add constraint uc_email unique (email);


مثال های کاربردی برای ایندکس کردن در SQL
3- Cluster index

برای بهبود نحوه ذخیره و بازیابی داده ها انتخاب شما می تواند Sort از نوع Cluster index باشد، زیرا با توجه به نحوه مرتب کردن و نوع ذخیره سازی ردیف های جدول بر اساس مقادیر یک یا چند ستون مشخص شده می توان دسترسی Sequential، کاهش عملیات ورودی/خروجی دیسک و افزایش سرعت Query ها را تجربه نمود. بنابراین اگر می خواهید از این دسته تجربیات ارتقا عملکرد در هنگان ایندکس کردن داخل SQL داشته باشید باید Case های Cluster index استفاده کنید. علاوه بر موارد بالا Cluster index بهترین نوع جستجو و مرتب سازی در گزارش های تراکنش یا شماره فاکتورهای متوالی می باشند.
  • مثالی برای نحوه ایجاد Cluster index در  SQL
ابتدا یک جدول به نام Employees ایجاد کنید، سپس برای Cluster Index در SQL Server باید دستور زیر را وارد کنید:
SQL
Create Table Employees (
Employeeid int Primary Key,
FirstName Nvarchar (50),
LastName Nvarchar (50),
Birthdate date
));
کلید Primary ما EmployeeID است که در این حالت SQL Server یک Cluster Index را به صورت پیش فرض به Primary Key جدول شما اضافه می نماید. اما برای ایجاد کردن Cluster Index جدید باید دستور زیر را وارد کنید:
SQL
Create Clusted Index ix_lastname
On employees (LastName);
همچنین جهت این ایندکس به چند ستون دستور زیر به شما کمک خواهد کرد:
SQL
Create Clusted Index ix_Compoundexex
On employees (Lastname, Firstname);
اکنون به کمک مراحل بالا یک Cluster Index بر روی دو ستون LastName و FirstName دارید.

4- Non-Clustered index

اگر می خواهید یک نوع از ایندکس ها در SQL به شما معرفی کنم که در آن به بازیابی داده ها پرداخته می شود باید بگویم که Non-Clustered index می تواند بهترین گزینه برای شما باشد. تفاوت ایندکس نوع Non-Clustered با Clustered در این است که در مدل Clustered نحوه ایندکس کردن به ترتیب فیزیکی در ردیف های داده جدول تاثیر می گذارند اما در مدل Non-Clustered ساختارهای داده ای جدا برای دسترسی بهتر ایجاد خواهند شد. بنابراین بازیابی سریع داده ها در این روش به این گونه است که عملکرد Query ها را با صدور مجوز برای Database Management System در مکان یابی ردیف های خاص بر اساس ستون ها در نظر میگیرد. همچنین Non-Clustered ورودی و خروجی دیسک ها را با توجه به عدم نیاز به اسکن کامل در دیسک ها کاهش می دهند و از Index های Multiple پشتیبانی می کند.
  • مثالی برای نحوه ایجاد Non-Cluster index در  SQL
برای شروع بیایید تصور کنیم که یک جدول به نام Employees و ستون های EmployeeID ،FirstName ،LastName و Department داریم. اما اگرجدولی ندارید باید از دستور زیر استفاده کنید:
sql
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Department NVARCHAR(50)
);

در ادامه برای وارد کردن Non-Clustered index در Last Name دستور زیر مناسب ترین کار است:
sql
CREATE NONCLUSTERED INDEX IX_LastName
ON Employees (LastName);

همچنین برای ایجاد چندین ستون در این ایندکس از ذستور زیر کمک بگیرید:
sql
CREATE NONCLUSTERED INDEX IX_Name_Department
ON Employees (LastName, FirstName, Department);

اکنون پس از گذراندن این مراحل Non-Clustered indexشما بر روی ستون های LastName ،FirstName و Department ایجاد شده است.

مثال های کاربردی برای ایندکس کردن در SQL

جمع بندی اصلی ترین تفاوت های انواع ایندکس در SQL


نوع ایندکس نحوه استفاده از ایندکس نکات مثبت نکات منفی
Primary Key Index به صورت خودکار با Primary key برای داده های منحصر بفرد اعمال می شود. بازیابی سریع داده - تضمین یکپارچگی داده بروز رسانی کند - ذخیره سازی اضافه
Unique Key indicator اعمال منحصر بفرد بودن برای ستونی که غیر بخش Primary key اصلی است. جستجو بهتر - جلوگیری از مقادیر تکراری عملیات Write کند - ذخیره سازی اضافه
Cluster index تعیین ترتیب ذخیره سازی فیزیکی در جدول استفاده کارآمد از دیسک - بازیابی سریع داده با Query محدود یک عدد در هر Table به دلیل Reordering - بروز رسانی کند
Non-Cluster index ارائه ساختاری مجزا برای ردیف ها در داده ها همراه با Pointer اسکن سریع جدول - امکان ایجاد چندین ایندکس ذخیره سازی اضافه - Write کند به دلیل بروز رسانی فهرست

سخن آخر

شما با مطالعه این عنوان دریافتید که چگونه فاکتورهای کاربردی برای Index در SQL مانند Primary Key ،Unique ،Clustered ،Non-Clustered و Full-text می تواند در نحوه عملکرد دیتابیس سیستم های شما تاثیر داشته باشد به همین ترتیب می توانید از تکنیک های بالا در جهت ارتقا عملکردی استفاده کرده و تجربیات خود را با ما و سایر کاربران به اشتراک بگذارید. از توجه همیشگی شما بسیار سپاسگزاریم.
چقدر این پست مفید بود؟ روی یک ستاره کلیک کنید تا به آن امتیاز دهید!
پست های پیشنهادی