آموزش MySql – قسمت دوم – ایندکس

mysql index

شاخص ها یا ایندکس­ها در MySql

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

در زمان ایجاد ایندکس، باید در نظر گرفته شود که برای ایجاد کوئری های SQL چه ستون­هایی استفاده خواهند شد و یک یا چند ایندکس در این ستون­ها ایجاد شود.

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

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

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

ایندکس ساده و منحصر به فرد در MySql

شما می توانید یک ایندکس منحصر به فرد برای جدول ایجاد کنید. شاخص منحصر به فرد بدان معنی است که دو سطر نمی توانند مقدار ایندکس یکسان داشته باشند. در اینجا دستورات برای ایجاد ایندکس برای جدول آورده شده است:

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,…);

شما می توانید یک یا چند ستون برای ایجاد ایندکس استفاده کنید. به عنوان مثال، می توانید یک شاخص برای tutorials_tbl با استفاده از  tutorial_authorایجاد کنید.

CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)

شما می توانید یک شاخص ساده بر روی جدول ایجاد کنید. فقط کلمه کلیدی UNIQUE را از پرس و جو حذف کنید تا ایندکس ساده ایجاد کنید. ایندکس ساده به مقادیر تکراری در جدول اجازه می دهد.

اگر شما می خواهید تا مقادیر یک ستون  را به ترتیب نزولی ایندکس کنید، شما می توانید کلمه DESC را بعد از  نام ستون اضافه کنید.

mysql> CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author DESC)

دستور ALTER برای اضافه کردن و حذف کردن INDEX:

چهار نوع از دستورات برای اضافه کردن ایندکس به جدول وجود دارد:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): این دستور یک کلید اصلی می افزاید به این معنی که مقدار ایندکس باید یکتا باشد و نمی تواند تهی باشد.
  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): این دستور یک اندکس برای مقادیری که باید یکتا باشند ایجاد می کند (به استثنای مقدار NULL، که ممکن است چندین بار وجود داشته باشند).
  • :ALTER TABLE tbl_name ADD INDEX index_name (column_list) این دستور یک اندکس معمولی که در آن هر مقدار ممکن است بیش از یک بار ظاهر شوند، اضافه می کند.
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list): این دستور یک ایندکس FULLTEXT ویژه ای که به منظور جستجوی متن استفاده می شود، اضافه می کند.

در اینجا مثالی برای اضافه کردن ایندکس به جدول آورده شده است.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

شما می توانید هر ایندکسی را با استفاده از DROP همراه با دستور ALTER حذف کنید. در مثال زیر ایندکسی که در بالا ایجاد شده بود، حذف می کنیم.

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

دستور ALTER برای اضافه کردن و حذف کردن کلید اصلی:

شما می توانید کلید اصلی را به همان روش اضافه کنید. اما مطمئن شوید که کلید اصلی بر روی ستون –هایی ایجاد شود که تهی نیستد.

در اینجا مثالی برای اضافه کردن کلید اصلی در جدول آورده شده است. در ابتدا ستون بدون NULL یا تهی ایجاد شده و پس از کلید اصلی به آن اضافه شده است.

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

شما می توانید از دستور ALTER برای حذف کلید اصلی به صورت زیر استفاده کنید:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

برای حذف ایندکسی که کلید اصلی نیست، شما باید نام ایندکس را مشخص کنید.

نمایش اطلاعات INDEX:

شما می توانید از دستور  SHOW INDEX برای تولید لیست تمام ایندکس­های مرتبط با یک جدول استفاده کنید. خروجی با Vertical-format (که بوسیله \G مشخص می شود) اغلب با این دستور برای جلوگیری از خطوط طولانی مفید است:

مثال:

mysql> SHOW INDEX FROM table_name\G

برچسب ها

ممکن است به این موارد نیز علاقه مند باشید:

0 دیدگاه در “آموزش MySql – قسمت دوم – ایندکس”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی را در کادر زیر بنویسید *

به ما بپیوندید