Індекси в mysql

Індекси використовуються для прискорення вибірки даних з таблиць бази даних. По суті справи, індекс в MySQL - це сортування певного поля в таблиці. Тобто якщо поле зробити індексом, то вся таблиця буде відсортована по цьому полю. Чому це вигідно?
Припустимо, в нашій таблиці знаходиться 1000000 записів. У кожного запису є унікальний ідентифікатор ID. І, допустимо, нам треба витягнути запість з ID = 530124. Якщо немає індексу, то MySQL буде по черзі перебирати всі записи в таблиці, поки не знайде потрібну. У гіршому випадку, він буде змушений перебрати 1000000 записів. Зрозуміло, це буде дуже довго. А якби був індекс (тобто поле було б відсортовано), то вибірка записи сталася б в середньому в 100 000 разів швидше. Як бачите, вигода очевидна.
Однак, індекси мають ваду, який не дозволяє робити індексом кожне поле таблиці. Фактично, індекс - це ще одна таблиця, але просто з відсортованих відповідним полем. Тобто, роблячи індекс одного поля, Ви створюєте ще одну таку саму таблицю, яка буде займати додаткове місце на диску.
Ще один невеликий мінус індексів в MySQL полягає в тому, що запити на вставку нових записів змушують проводити сортування таблиці заново. В результаті, вставка нових записів буде відбуватися трохи довше звичайного. Але не забувайте, що в большіінстве випадків робити це доводиться набагато рідше, ніж робити вибірку, тому цей мінус не суттєвий.
Як зробити індекс в MySQL?
Для первинних ключів (PRIMARY KEY) індекс створюється автоматично, а ось для інших полів послідовність дій в PHPMyAdmin наступна:
- Зайти на головну сторінку PHPMyAdmin.
- Вибрати зі списку ім'я бази даних, де знаходиться необхідна таблиця.
І, наостанок, хочеться зробити невелике резюме, щоб Ви зрозуміли: "Коли треба створювати індекси MySQL":
- Якщо по полю дуже часто йде вибірка, то його треба робити індексом.
- Якщо в таблицю дуже часто додаються записи, і при цьому вибірка відбувається рідко (таке іноді буває), то індекси робити не треба.
І ще дещо. Якщо раптом Ви бачите, що Ваші запити на вибірку дуже сильно гальмують, то проаналізуйте причину цього. Швидше за все, треба просто додати індекс. Загалом, тестируйте, і все стане зрозуміло.
Запропонуйте цю статтю друзям:
Якщо Вам сподобався сайт, то розмістіть посилання на нього (у себе на сайті, на форумі, в контакті):
Вона виглядає ось так:
Привіт, Михайло. У мене проблема полягає в тому, що, коли я натискаю на кнопку індексації, то вискакує помилка # 1170 - BLOB / TEXT column # 'Text #' used in key specification without a key length. Будь ласка підкажіть, що робити?
Покажіть Ваш запит. Проблема відбувається тоді, коли є тип поля BLOB / TEXT і йому належать інші типи наприклад такі як TINYBLOB. MEDIUMBLOB. LONGBLOB. TINYTEXT. MEDIUMTEXT і LONGTEXT і Ви намагаєтеся зробити первинний ключ.
SELECT id, title, description, view FROM data WHERE MATCH (text) AGAINST (# '$ search #'). Якось так. Рився в інтернеті, тільки таке знайшов не знаю, може якось по-іншому треба?