ایندکس‌ها در MySQL ابزارهای مهمی هستند که به بهبود کارایی و سرعت پرس‌وجوهای (queries) پایگاه داده کمک می‌کنند. این مقاله به بررسی مفهوم ایندکس، انواع ایندکس‌ها و نحوه ایجاد و استفاده از آنها در MySQL می‌پردازد.

مفهوم ایندکس

ایندکس‌ها ساختارهای داده‌ای ویژه‌ای هستند که به موتور پایگاه داده کمک می‌کنند تا رکوردها را به صورت سریع‌تر پیدا و بازیابی کند. بدون ایندکس، MySQL مجبور است تا تمام رکوردهای جدول را برای پیدا کردن اطلاعات مورد نیاز پیمایش کند که می‌تواند زمان‌بر باشد.

انواع ایندکس‌ها در MySQL

  1. ایندکس اصلی (Primary Key)
  • یک ایندکس منحصر به فرد که برای شناسایی منحصر به فرد هر رکورد در جدول استفاده می‌شود.
  • به طور خودکار ایجاد می‌شود وقتی که یک ستون به عنوان کلید اصلی تعریف می‌شود.
  1. ایندکس منحصر به فرد (Unique Index)
  • ایندکسی که تضمین می‌کند تمام مقادیر در یک ستون یا ترکیبی از ستون‌ها منحصر به فرد باشند.
  1. ایندکس عادی (Regular Index)
  • ایندکسی که برای سرعت بخشیدن به جستجوها در ستون‌های خاص استفاده می‌شود.
  1. ایندکس ترکیبی (Composite Index)
  • ایندکسی که شامل بیش از یک ستون است و برای بهبود عملکرد پرس‌وجوهایی که چندین ستون را فیلتر می‌کنند، استفاده می‌شود.
  1. ایندکس تمام متن (Full-Text Index)
  • ایندکسی که برای جستجوی متن کامل در ستون‌های نوع متن مانند VARCHAR یا TEXT استفاده می‌شود.

نحوه ایجاد ایندکس در MySQL

1. ایجاد ایندکس اصلی (Primary Key)

هنگام ایجاد جدول:

CREATE TABLE useritvisit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    phone VARCHAR(15),
    city VARCHAR(50)
);

اضافه کردن به جدول موجود:

ALTER TABLE useritvisit
ADD PRIMARY KEY (id);

2. ایجاد ایندکس منحصر به فرد (Unique Index)

هنگام ایجاد جدول:

CREATE TABLE useritvisit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    phone VARCHAR(15),
    city VARCHAR(50)
);

اضافه کردن به جدول موجود:

CREATE UNIQUE INDEX unique_email ON useritvisit (email);

3. ایجاد ایندکس عادی (Regular Index)

هنگام ایجاد جدول:

CREATE TABLE useritvisit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    phone VARCHAR(15),
    city VARCHAR(50),
    INDEX (name)
);

اضافه کردن به جدول موجود:

CREATE INDEX idx_name ON useritvisit (name);

4. ایجاد ایندکس ترکیبی (Composite Index)

هنگام ایجاد جدول:

CREATE TABLE useritvisit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    phone VARCHAR(15),
    city VARCHAR(50),
    INDEX (name, city)
);

اضافه کردن به جدول موجود:

CREATE INDEX idx_name_city ON useritvisit (name, city);

5. ایجاد ایندکس تمام متن (Full-Text Index)

هنگام ایجاد جدول:

CREATE TABLE useritvisit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    phone VARCHAR(15),
    city VARCHAR(50),
    FULLTEXT (name, email)
);

اضافه کردن به جدول موجود:

CREATE FULLTEXT INDEX ft_name_email ON useritvisit (name, email);

استفاده از ایندکس در پرس‌وجوها

با استفاده از ایندکس‌ها می‌توانید بهبود قابل توجهی در عملکرد پرس‌وجوهای خود مشاهده کنید. به عنوان مثال، با فرض اینکه ایندکس idx_name بر روی ستون name ایجاد شده است، پرس‌وجوهای زیر سریع‌تر اجرا می‌شوند:

SELECT * FROM useritvisit WHERE name = 'Ali';

حذف ایندکس در MySQL

اگر دیگر به ایندکسی نیاز ندارید، می‌توانید آن را حذف کنید.

حذف ایندکس عادی یا منحصر به فرد:

DROP INDEX idx_name ON useritvisit;

حذف ایندکس تمام متن:

DROP INDEX ft_name_email ON useritvisit;

جدول‌های مثال

ایجاد جدول useritvisit

CREATE TABLE useritvisit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    phone VARCHAR(15),
    city VARCHAR(50)
);
idnameemailphonecity
1Aliali@example.com09123456789Tehran
2Mohamadmohamad@example.com09234567890Shiraz
3Rezareza@example.com09345678901Isfahan
4Mahyamahya@example.com09456789012Eslamabad
5Mehrdadmehrdad@example.com09567890123Kermanshah

اضافه کردن ایندکس‌ها به جدول useritvisit

ایندکس منحصر به فرد روی ستون email
CREATE UNIQUE INDEX unique_email ON useritvisit (email);
ایندکس عادی روی ستون name
CREATE INDEX idx_name ON useritvisit (name);
ایندکس ترکیبی روی ستون‌های name و city
CREATE INDEX idx_name_city ON useritvisit (name, city);
ایندکس تمام متن روی ستون‌های name و email
CREATE FULLTEXT INDEX ft_name_email ON useritvisit (name, email);

نتیجه‌گیری

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

منابع

  1. MySQL Documentation
  2. MySQL Tutorial
  3. W3Schools SQL Tutorial

کلیدواژه‌ها

  • MySQL
  • ایندکس
  • Primary Key
  • Unique Index
  • Composite Index
  • Full-Text Index
  • مدیریت داده‌ها
  • پایگاه داده
مهرداد یاری

Recent Posts

پیاده‌سازی پروژه در PHP : راهنمای جامع

PHP یکی از محبوب‌ترین زبان‌های برنامه‌نویسی سمت سرور برای توسعه وب است که به دلیل…

19 ساعت ago

فایل php.ini چیست؟

فهرست مطالب فایل php.ini چیست؟ فایل php.ini کجاست؟ مهم‌ترین تنظیمات در فایل php.ini حداکثر زمان…

21 ساعت ago

اتصال دائم به پایگاه داده در PHP

اتصال دائم (Persistent Connection) به پایگاه داده یکی از روش‌های بهینه‌سازی ارتباطات در برنامه‌های PHP…

21 ساعت ago

افزودن عکس در پایگاه داده با PHP

ذخیره و نمایش تصاویر و مدیا در پایگاه داده یکی از نیازهای رایج در پروژه‌های…

3 هفته ago

بررسی خطاهای کوئری‌ پایگاه داده در PHP

هنگام کار با پایگاه داده در PHP، ممکن است خطاهایی ناشی از کوئری‌های ناقص یا…

4 هفته ago

آموزش ایجاد پایگاه داده در PHP

ایجاد پایگاه داده در PHP یکی از مباحث اساسی برای ساخت وب‌سایت‌ها و برنامه‌های تحت…

4 هفته ago