Що таке покривний індекс (covering index)?
Покривний індекс (covering index) - це індекс, який містить усі дані, потрібні для виконання запиту, тому база може отримати результат лише з індексу, не звертаючись до самої таблиці.
Принцип
Зазвичай індекс зберігає ключі + посилання на рядок таблиці.
Але якщо запит використовує лише ті стовпці, які вже є в індексі -
СУБД може взяти все прямо з індексу, без «lookup» до таблиці.
Це сильно прискорює SELECT.
Приклад
CREATE INDEX idx_orders_customer_amount
ON orders(customer_id, amount);Тепер запит
SELECT customer_id, amount
FROM orders
WHERE customer_id = 5;працюватиме лише за індексом - він уже «покриває» всі потрібні поля.
Особливості
-
Прискорює
SELECT, бо виключає звернення до таблиці. -
Ефективний для часто використовуваних фільтрів і вибірок.
-
У деяких СУБД (наприклад, MySQL) можна явно додати додаткові поля до індексу:
sqlCREATE INDEX idx_orders_customer ON orders(customer_id) INCLUDE(amount);
Тут amount не бере участі в сортуванні, але зберігається в індексі, щоб покривати запити.
Суть
Покривний індекс = «усе потрібне вже всередині індексу» -> запит виконується швидше, без зайвого читання таблиці.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.