🤔 Что такое составной индекс?
Составной индекс (Composite Index) – это индекс, который создаётся сразу на несколько колонок таблицы.
🚩Как работает составной индекс?
🟠Пример без индекса (медленный поиск)
Допустим, у нас есть таблица orders
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
status VARCHAR(50),
created_at DATETIME
);
И мы выполняем поиск по user_id и status
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid';
Создаём составной индекс (ускоряем поиск)
CREATE INDEX idx_user_status ON orders(user_id, status);
Как SQL использует составной индекс? (Правило слева направо)
Важный момент: составной индекс работает слева направо.
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid'; -- ✅ Использует индекс
SELECT * FROM orders WHERE user_id = 5; -- ✅ Использует индекс (user_id - первый в индексе)
НЕ работает
SELECT * FROM orders WHERE status = 'paid'; -- ❌ Индекс не используется (user_id пропущен)
Ставь 👍 и забирай 📚 Базу знаний
Составной индекс (Composite Index) – это индекс, который создаётся сразу на несколько колонок таблицы.
🚩Как работает составной индекс?
🟠Пример без индекса (медленный поиск)
Допустим, у нас есть таблица orders
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
status VARCHAR(50),
created_at DATETIME
);
И мы выполняем поиск по user_id и status
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid';
Создаём составной индекс (ускоряем поиск)
CREATE INDEX idx_user_status ON orders(user_id, status);
Как SQL использует составной индекс? (Правило слева направо)
Важный момент: составной индекс работает слева направо.
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid'; -- ✅ Использует индекс
SELECT * FROM orders WHERE user_id = 5; -- ✅ Использует индекс (user_id - первый в индексе)
НЕ работает
SELECT * FROM orders WHERE status = 'paid'; -- ❌ Индекс не используется (user_id пропущен)
Ставь 👍 и забирай 📚 Базу знаний