SQL CREATE INDEX Statement

در SQL از CREATE INDEX برای افزایش سرعت جستجو و کوئری‌ها استفاده می‌کنیم.
ایندکس باعث میشه دیتابیس بدون نیاز به بررسی تمام رکوردها، سریع‌تر داده‌های موردنظر رو پیدا کنه.

🔹 ساختار کلی

CREATE INDEX index_name ON table_name (column1, column2, ...);

📌 با این دستور، ایندکسی روی ستون یا ستون‌های مشخص‌شده ساخته میشه.

🔹 مثال ساده

CREATE INDEX idx_lastname ON Employees (LastName);

📌 توضیح:
ایندکس idx_lastname روی ستون LastName ساخته میشه تا جستجوهای مربوط به نام خانوادگی سریع‌تر انجام بشن.

🔹 ایندکس چندستونه

CREATE INDEX idx_name_dept ON Employees (LastName, Department);

📌 توضیح:
در این حالت، ترکیب دو ستون LastName و Department به عنوان کلید ایندکس استفاده میشه.

🔹 ایندکس یکتا (UNIQUE INDEX)

اگر بخوایم مقادیر ستون تکراری نباشن، از UNIQUE استفاده می‌کنیم:

CREATE UNIQUE INDEX idx_email ON Users (Email);

📌 توضیح:
این ایندکس تضمین می‌کنه که مقدار Email در جدول Users تکراری نباشه.

🔹 حذف ایندکس

DROP INDEX idx_lastname ON Employees;

📌 در SQL Server و MySQL از این دستور برای حذف ایندکس استفاده میشه.

🔹 نکات مهم

  • ایندکس باعث افزایش سرعت SELECT، WHERE، و ORDER BY میشه.

  • اما درج (INSERT)، حذف (DELETE) و ویرایش (UPDATE) ممکنه کمی کندتر بشن، چون ایندکس‌ها هم باید به‌روزرسانی بشن.

  • ایندکس مثل فهرست در کتاب عمل می‌کنه: پیدا کردن سریع‌تره ولی نگهداریش هزینه داره.

  • در پایگاه‌داده‌های بزرگ، انتخاب درست ستون‌هایی که ایندکس می‌شن خیلی مهمه.

🔹 ایندکس روی چند ستون پرکاربرد

اگر مرتب از چند ستون در شرط جستجو استفاده می‌کنی، ایندکس ترکیبی بهترین گزینه‌ست:

CREATE INDEX idx_product_category ON Products (CategoryID, Price);

📌 با این ایندکس، کوئری‌هایی مثل زیر سریع‌تر اجرا می‌شن:

SELECT * FROM Products WHERE CategoryID = 5 AND Price < 100000;