MySQL Индекс: Урок за създаване, добавяне и пускане

Какво е индекс?

Индекси в MySQL сортирайте данните по организиран последователен начин. Те се създават в колоната(ите), която ще се използва за филтриране на данните. Мислете за индекс като за сортиран по азбучен ред списък. По-лесно е да търсите имена, които са сортирани по азбучен ред, отколкото такива, които не са сортирани.

Използването на индекс върху таблици, които често се актуализират, може да доведе до лоша производителност. Това е защото MySQL създава нов индексен блок всеки път, когато данните се добавят или актуализират в таблицата. Като цяло индексите трябва да се използват в таблици, чиито данни не се променят често, но се използват често в избрани заявки за търсене.

За какво се използва индекс?

Никой не харесва бавните системи. Високата производителност на системата е от първостепенно значение в почти всички системи за бази данни. Повечето фирми инвестират сериозно в хардуер, така че извличането и манипулирането на данни да може да бъде по-бързо. Но има ограничение за хардуерните инвестиции, които бизнесът може да направи. Оптимизирането на вашата база данни е по-евтино и по-добро решение.

MySQL индекс

Бавното време за реакция обикновено се дължи на това, че записите се съхраняват произволно в таблиците на базата данни. Заявките за търсене трябва да преминават през всички случайно съхранени записи един след друг, за да намерят желаните данни. Това води до бази данни с ниска производителност, когато става въпрос за извличане на данни от големи таблици. Следователно се използват индекси, които сортират данните, за да улеснят търсенето.

Синтаксис: Създаване на индекс

Индексите могат да бъдат дефинирани по 2 начина

  1. По време на създаването на таблицата
  2. След като таблицата е създадена

Пример:

За нашия myflixdb очакваме много търсения в базата данни на пълно име.

Ще добавим колоната „full_names“ към Index в нова таблица „members_indexed“.

Показаният по-долу скрипт ни помага да постигнем това.

CREATE TABLE `members_indexed` (
  `membership_number` int(11) NOT NULL AUTO_INCREMENT,
  `full_names` varchar(150) DEFAULT NULL,
  `gender` varchar(6) DEFAULT NULL,
  `date_of_birth` date DEFAULT NULL,
  `physical_address` varchar(255) DEFAULT NULL,
  `postal_address` varchar(255) DEFAULT NULL,
  `contact_number` varchar(75) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`membership_number`),INDEX(full_names)
) ENGINE=InnoDB;

Изпълнете горния SQL скрипт в MySQL работна маса срещу „myflixdb“.

MySQL Създаване на индекс

Опресняването на myflixdb показва новосъздадената таблица с име members_indexed.

"Забележка" members_indexed таблицата има „пълни_имена“ във възела индекси.

Тъй като базата на членовете се разширява и броят на записите се увеличава, заявките за търсене в таблицата members_indexed, които използват клаузите WHERE и ORDER BY, ще бъдат много по-бързи в сравнение с тези, изпълнявани в таблицата members без дефиниран индекс.

Добавете основен синтаксис на индекса

Горният пример създаде индекса при дефинирането на таблицата на базата данни. Да предположим, че вече имаме дефинирана таблица и заявките за търсене в нея са много бавни. Те отнемат твърде много време, за да върнат резултатите. След като проучихме проблема, откриваме, че можем значително да подобрим производителността на системата, като създадем INDEX в най-често използваната колона в клаузата WHERE.

Можем да използваме следната заявка, за да добавим индекс

CREATE INDEX id_index ON table_name(column_name);

Да предположим, че заявките за търсене в таблицата с филми са много бавни и искаме да използваме индекс върху „заглавието на филма“, за да ускорим заявките, можем да използваме следния скрипт, за да постигнем това.

CREATE INDEX `title_index` ON `movies`(`title`);

Изпълнението на горната заявка създава индекс в полето за заглавие в таблицата с филми.

Това означава, че всички заявки за търсене в таблицата с филми, използващи „заглавието“, ще бъдат по-бързи.

Заявките за търсене в други полета в таблицата с филми обаче ще бъдат по-бавни в сравнение с тези, базирани на индексираното поле.

Забележка: Можете да създадете индекси на множество колони, ако е необходимо, в зависимост от полетата, които възнамерявате да използвате за вашата машина за търсене на база данни.

Ако искате да видите индексите, дефинирани в определена таблица, можете да използвате следния скрипт, за да направите това.

SHOW INDEXES FROM table_name;

Нека сега да разгледаме всички индекси, дефинирани в таблицата с филми в myflixdb.

SHOW INDEXES FROM `movies`;

Изпълнение на горния скрипт в MySQL работна маса срещу myflixdb ни дава резултати за създадения индекс.

Забележка: Първичният и външният ключове в таблицата вече са индексирани от MySQL. Всеки индекс има свое собствено уникално име и колоната, в която е дефиниран, също се показва.

Синтаксис: Изпуснете индекса

Командата drop се използва за премахване на вече дефинирани индекси на таблица.

Може да има моменти, когато вече сте дефинирали индекс на таблица, която често се актуализира. Може да искате да премахнете индексите на такава таблица, за да подобрите производителността на UPDATE и INSERT заявките. Основният синтаксис, използван за премахване на индекс в таблица, е както следва.

DROP INDEX `index_id` ON `table_name`;

Нека сега да разгледаме един практически пример.

DROP INDEX ` full_names` ON `members_indexed`;

Изпълнението на горната команда премахва индекса с id ` full_names ` от таблицата members_indexed.

Oбобщение

  • Индексите са много мощни, когато става въпрос за значително подобряване на ефективността на MySQL заявки за търсене.
  • Индексите могат да бъдат дефинирани при създаване на таблица или добавени по-късно, след като таблицата вече е създадена.
  • Можете да дефинирате индекси на повече от една колона в таблица.
  • SHOW INDEX FROM table_name се използва за показване на дефинираните индекси на таблица.
  • Командата DROP се използва за премахване на дефиниран индекс на дадена таблица.

Обобщете тази публикация с: