Skip to content

Indexes

Індекси дозволяють швидко знаходити потрібну інформацію в таблицях. При створенні індексу для певного поля у БД, система створює окрему структуру, яка містить відсортовані значення цього поля разом із посиланнями на відповідні записи. Дані в індексованому стовпці зберігаються в певному порядку, що полегшує та прискорює пошук: числові дані зберігаються у числовому порядку, текстові — в алфавітному, а дати — у хронологічному. Це дозволяє базі даних швидко знаходити необхідні записи.

Використовувати індекси потрібно з розумом. Кожна зміна в таблиці (UPDATEINSERT та DELETE) вимагає перестворення індексів, що може уповільнити роботу з базою даних. Саме тому, індекси потрібно створювати лише для тих полів, за якими пошук здійснюватиметься значно частіше ніж запис.

Також на доцільність використання індексів може впливати розмір бази даних. Наприклад, з невеликою базою даних впровадження індексів може не мати значного впливу на продуктивність. Однак зі збільшенням кількості даних індекси можуть значно прискорити операції читання.

Створення індексів — це чудова техніка для оптимізації роботи бази, але застосовуй її свідомо, оскільки вона покращує лише зчитування, і негативно впливає на швидкість запису.

Create Employees table:

CREATE DATABASE company;
USE company;
CREATE TABLE Employees (
    EmployeeID INT AUTO_INCREMENT,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Position VARCHAR(50),
    Department VARCHAR(50),
    HireDate DATE,
    PRIMARY KEY (EmployeeID)
);
DESCRIBE Employees;
INSERT INTO Employees (FirstName, LastName, Position, HireDate, Department)
VALUES ('John', 'Doe', 'Manager', '2023-01-10', 'Marketing'),
       ('Jane', 'Dough', 'Developer', '2023-02-20', 'IT');
SELECT * FROM Employees;

Створення індексу

Для прикладу розглянемо таблицю  Employees та створимо індекс для стовпчика Department. Індекси створюються командою CREATE INDEX:

CREATE INDEX idx_department ON Employees(Department); 

Тут idx_department — це назва індексу, Employes — назва таблиці, а Department — назва стовпчика, дані якого індексуються.

Тепер переглянемо існуючі індекси для нашої таблиці. Для цього використаємо наступну команду:

SHOW INDEX FROM Employees;

За потреби ми можемо змінити ім’я індексу чи видалити його. Змінимо назву нашого індексу, наприклад, на current_department_index:

ALTER TABLE Employees RENAME INDEX idx_department TO current_department_index.

Щоб видалити індекс, потрібно скористатись наступною командою:

ALTER TABLE Employees DROP INDEX current_department_index.