ئیندێکس (Index) چییە؟

لە MySQL، ئیندێکس پێکهاتەیەکی داتاییە کە خێرایی دۆزینەوەی زانیارییەکان لە خشتەکاندا زۆر زیاد دەکات. وەک پێرستی کتێبێک وایە؛ لەبری ئەوەی هەموو لاپەڕەکانی کتێبەکە بگەڕێیت بۆ دۆزینەوەی بابەتێک، ڕاستەوخۆ دەچیتە سەر ئەو لاپەڕەیەی کە لە پێرستەکەدا ئاماژەی پێکراوە.

تێبینی: بەبێ ئیندێکس، MySQL ناچارە هەموو ڕیزەکانی خشتەکە بپشکنێت (Full Table Scan) بۆ دۆزینەوەی داتایەک، ئەمەش لە خشتە گەورەکاندا کاتێکی زۆر دەبات.

دروستکردنی ئیندێکس بە بەکارهێنانی CREATE INDEX

بۆ دروستکردنی ئیندێکس لەسەر ستوونێکی دیاریکراو، فەرمانی CREATE INDEX بەکاردەهێنین. ئەمە یارمەتی MySQL دەدات کە بە خێرایی بەدوای بەهاکاندا بگەڕێت.

CREATE INDEX idx_user_email ON users(email);

لە نموونەکەدا، ئێمە ئیندێکسێکمان لەسەر ستوونی email دروستکرد. ئێستا هەر کاتێک پرسیارێک بۆ دۆزینەوەی ئیمەیڵێک بکەین، MySQL بە خێراییەکی زۆر ئەنجامەکە دەدۆزێتەوە.

هەڵەی باو: زۆر کەس وا بیردەکەنەوە کە دەبێت لەسەر هەموو ستوونەکان ئیندێکس دروست بکەن، بەڵام ئەمە هەڵەیە چونکە ئیندێکسکردن کاتی زیادکردن و نوێکردنەوەی داتا (INSERT/UPDATE) خاو دەکاتەوە.

دروستکردنی ئیندێکس لە کاتی دروستکردنی خشتە

دەتوانیت لە هەمان کاتی دروستکردنی خشتەکەدا، ئیندێکسیش دیاری بکەیت. ئەمە ڕێگایەکی پاک و ڕێکە بۆ دیزاینکردنی داتابەیسەکەت.

CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    sku VARCHAR(50),
    INDEX (sku)
);

لێرەدا ستوونی sku ئیندێکس کراوە. ئەمە زۆر بەسوودە بۆ ئەو ستوونانەی کە زۆرجار لە بەشی WHERE ی پرسیارەکاندا بەکاردێن.

سڕینەوەی ئیندێکس

ئەگەر ئیندێکسێک چیتر پێویست نەبوو، دەتوانیت بە ئاسانی بیسڕیتەوە بۆ ئەوەی شوێن بۆ کرداری نوێکردنەوەی داتا بکەیتەوە.

ALTER TABLE users DROP INDEX idx_user_email;

ئەم فەرمانە ئیندێکسەکە لە خشتەی users لادەدات. بیرت بێت کە سڕینەوەی ئیندێکس هیچ کاریگەرییەکی لەسەر داتاکانی ناو خشتەکە نابێت، تەنها خێرایی گەڕان کەم دەکاتەوە.

کەی ئیندێکس بەکاربهێنین؟

  • لەو ستوونانەی کە زۆرجار لە WHERE بەکاردێن.
  • لەو ستوونانەی کە بۆ پەیوەندی (JOIN) بەکاردێن.
  • لەو خشتانەی کە ژمارەی ڕیزەکانیان زۆرە.

ئاگاداری: ئیندێکسکردنی ئەو ستوونانەی کە زۆر دەگۆڕدرێن (زۆر UPDATE دەکرێن) دەبێتە هۆی لاوازبوونی ئەدای داتابەیسەکە، چونکە لەگەڵ هەر گۆڕانکارییەکدا، ئیندێکسەکەش دەبێت نوێ بکرێتەوە.

ڕاهێنان

خشتەیەک بە ناوی orders دروست بکە کە ستوونەکانی order_id و customer_id ی تێدابێت. پاشان ئیندێکسێک لەسەر customer_id دروست بکە بۆ ئەوەی خێرایی دۆزینەوەی داواکارییەکانی هەر کڕیارێک زیاد بکەیت.

ئەمانە ئەم فێرکارییەیان تەواوکردووە

1 فێرخواز تەواویان کردووە