INDEXــەکان لە MySQL
Jun 21, 2018
3 خولەک
552 وشە
تــاگ: mysql
هاوبەشی بکە:

پێشەکی

بنکەدراوەی MYSQL چوارچێوەیەکی دراەی هەیە بە ناوی INDEX کە خێرایی کردار لە خشتەیەک چاکتر دەکا. دروستکردنی INDEX ـەکان لە MYSQL، لە یەک یان چەند خانە ئەنجام دەبێت.بنەمای دوودوویی بۆ گەڕانی خێرا و دەستگەیشتن بە دراوەکان جێبەجێ دەکا. کاتی دروستکردنی INDEX،دەبێ سەرنج بدەین کە تەواو خانەکان بۆ دروستکردنی داوا SQL و دروستکردنی یەک یان چەند INDEX لەو خانانە بەکاردەبرێن.لە ڕاستی INDEX جۆریک خشتەیە کە خانەی INDEX هەڵدەگرێت، وە ئاماژەیەک بە هەر یەک لە تۆمارکراوەکان خشتەەکان بوونی هەیە.

INDEXـەکان لە بنکەدراوەی MYSQL

سەرەتا دەبێ بزانن کە بەکارهێنەران INDEXــەکان نابینن. لە INDEXـەکان لە MYSQL تەنها بە مەبەستی خێرا کردنی بۆ نیشاندانی دراوەکان بەکەڵک دەگرن. فەرمانەکانی INSERT وە UPDATE لە فەرمانەکان SELECT لەSQL هێواشتر ئەنجام دەبێت.بۆ ئەوە کە دە لە INSERT و UPDATE بڕی INDEXـیش بەڕۆژ دەبن.

جۆری INDEXــی سادە و یەکتا

ئێوە دەتوانن INDEX ێکی یەکتا لە نێو خشتەیەک دروست بکەن. INDEX ـێکی یەکتا بەم مانایەیە دۆ دێڕ ناتوانن بڕێکی تایبەتیان ببێ.داڕستانی دروستکردنی INDEX لە نێو خشتەیەک بەم جۆرەیە :

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

ئێوە دەتوانن لە یەک یان چەند خانە بۆ دروستکردنی INDEXێک سوود بگرن.\بۆ وینە ئێمە دەتوانین دانەیەک INDEX لە سەر خشتەی tutorials_tbl بە یارمەتی tutorial_author دروستبکەین:

CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)

هەر وا دەتوانین بە سڕینەوەی کلیل وشەی UNIQUE لەquery یەک index سادە دروست بکەین. INDEXێکی سادە رێگە دەدا تا بڕەکان لە یەک خشتە دووجار بنەوە. ئەگەر گەرەکتانە بڕەکانی خانەیەک بە شێوازی نزمبوونی نیشان بدەن، هەر وا دەتوانین DESC پاس ناوی خانە پاسکەوت بکەین:

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

فەرمانی ALTER بە مەبەستی زیادکردن یان سڕینەوەی INDEX

٤ جۆر فەرمان بۆ زیادکردنی INDEX ـەکان بە یەک خشتە بوونی هەیە:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) ئەم فەرمانە کلیلیکی ئەسڵی بە خشتە زیاددەکا، ئەمە بەو مانایە کە INDEXـی ئەم خانەدەبێ یەکتا بێت.
  • (ALTER TABLE tbl_name ADD UNIQUE index_name (column_list : یەک INDEX دروستدەکات کە نرخەکان لە ئەوان دەبێ تایبەت بێت( بێجگە لە بڕەکانی NULL دەبێ چەند بار خۆی نیشان بدا)
  • (ALTER TABLE tbl_name ADD INDEX index_name (column_list :ئەمە INDEX ـیکی ئاسایی زیاد دەکا کە هەر بڕ دەبێ زۆرتر لە یەک جار نیشان دەدرێت.
  • (ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list : ئەمە بڕێکی تایبەت FULLTEXT کە بۆ مەبەستەکانی گەڕانی دەق بەکار دەهینرێت.

کۆدی خوارەوە نمونەیەک بۆ زیادکردنی INDEX لە خشتەیەکی هەبوو: </sxh sql> mysql> ALTER TABLE testalter_tbl ADD INDEX ©; ئێوە دەتوانن هەر کام لە indexـەکانی هەبوو بە یارمەتی DROP لە چوارچێوەی فەرمانی ALTER بسڕنەوە: نمونەی خوارەوە INDEX ێکی دروستکراوە لە نمونەی خوارەوە دەسڕێتەوە :

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

سودوەرگرتن لەALTER بۆ زیادکردن یان سڕینەوەی کلیلی ئەسڵی

ئێوە دەتوانن کلیلێکی ئەسڵی بەم شێوازە دروستبکەن. بەڵام دڵنیا بن کە کلیلی ئەسڵی لە سەر خانەکان ئیش دەکەن کە NULL نین. نمونەی خوارەوە زیادکردنی کلیلی ئەسڵی بە خشتەکانی بنکەدراوەن. سەرەتا خانەی 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 ـێک کە کلیلی ئەسڵی نییە، ئێوە دەتوانن ناوی index دیار بکەن.

نیشاندانی زانیاری index

دەتوانن بە یارمەتی فەرمانی SHOW INDEX هەموو indexـەکان لە نێو خشتەیەک، پێرست بکەن. دەتوانن بە یارمەتی لە نووسەی G\ تەواو دەرئەنجامەکان بە شێوازی ئەستوونی ڕیز بکەن. نمونە :

mysql> SHOW INDEX FROM table_name\G
........