English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
إن إنشاء الفهرس في MySQL مهم جدًا لتحسين أداء MySQL، يمكن للفهرس زيادة سرعة البحث في MySQL بشكل كبير.
إذا قمنا بالمقارنة، فإن MySQL الذي تم تصميمه بشكل معقول باستخدام الفهرس هو سيارة لامبورجيني، بينما MySQL بدون تصميم واستخدام الفهرس هو دراجة ثلاثية.
إذا استخدمنا صفحة المفاتيح (الفهرس) في قاموس اللغة الصينية كالمثال، يمكننا العثور بسرعة على الحرف المطلوب عن طريق الترتيب حسب الأبجدية، الخطوط، الأجزاء المكونة من الأبجدية، إلخ.
الفهرس يتميز بالفهرس المكون من سطر واحد والفهرس المكون من عدة سطور. الفهرس المكون من سطر واحد، أي أن الفهرس يحتوي على سطر واحد فقط، يمكن للجدول أن يحتوي على عدة فهرس مكونة من سطر واحد، ولكن هذا ليس الفهرس المكون من عدة سطور. الفهرس المكون من عدة سطور، أي أن الفهرس يحتوي على عدة سطور.
عند إنشاء الفهرس، يجب التأكد من أن الفهرس يطبق على جملة الاستعلام SQL (عادة كشرط في جملة WHERE).
في الواقع، الفهرس هو جدول أيضًا، والذي يحفظ المفتاح الرئيسي والمجالات المفهرسة ويشير إلى سجلات الجدول الفعلي.
الآن، جميع الأحاديث حول الفوائد التي يوفرها الفهرس، ولكن الاستخدام الزائد للفهرس سيؤدي إلى سوء الاستخدام. لذلك، لديه أيضًا عيوب: على الرغم من أن الفهرس يزيد من سرعة الاستعلام بشكل كبير، إلا أنه يقلل من سرعة تحديث الجداول، مثل INSERT و UPDATE و DELETE. لأنه عند تحديث الجداول، يجب على MySQL أن يحفظ البيانات وأيضًا ملف الفهرس.
إنشاء الفهرس سيشغل مساحة على ملف الفهرس.
هذا هو أعلى مستوى من الأسعار، وليس لديه أي قيود. لديها أنواع إنشاء متعددة:
CREATE INDEX indexName ON table_name (column_name)
إذا كان نوع CHAR أو VARCHAR، يمكن أن يكون طول الحقل أقل من الطول الفعلي للحقول؛ إذا كان نوع BLOB و TEXT، يجب تحديد length.
ALTER table tableName ADD INDEX indexName(columnName)
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
DROP INDEX [indexName] ON mytable;
إنه مشابه للعنصر العادي، الفرق هو: يجب أن تكون القيمة المرجعية للمؤشر متميزة، ولكن يمكن أن تكون هناك قيم فارغة. إذا كان المؤشر هو مؤشر مركب، فإن مجموعة القيم يجب أن تكون متميزة. ويوجد لهذه الطرق التالية لإنشائه:
CREATE UNIQUE INDEX indexName ON mytable(username(length))
ALTER table mytable ADD UNIQUE [indexName] (username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
هناك أربع طرق لإضافة مؤشر إلى جدول البيانات:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): يضيف هذا الجملة مفتاح رئيسي، مما يعني أن القيمة المرجعية للمؤشر يجب أن تكون متميزة وأن لا تكون NULL.
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): يجب أن تكون القيمة المرجعية للمؤشر متميزة ( باستثناء NULL، قد يظهر 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;
تأثير المفتاح الرئيسي على العمود (يمكن أن يكون عمودًا واحدًا أو أكثر متحدًا كمفتاح رئيسي)، عند إضافة فهرس المفتاح الرئيسي، يجب التأكد من أن المفتاح الرئيسي لا يكون فارغًا افتراضيًا (NOT 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;
عند حذف المفتاح الرئيسي، يجب فقط تحديد PRIMARY KEY، ولكن عند حذف الفهرس، يجب أن تعرف اسم الفهرس.
يمكنك استخدام الأمر SHOW INDEX لقائمة ببيانات الفهرس المرتبطة بالجدول. يمكنك إضافة \G لتشكيل输出来تنسيق المعلومات.
جرب الأمثلة التالية:
mysql> SHOW INDEX FROM table_name; \G ........