Проверяет понимание возможности создания составных B-tree индексов в базах данных и их применения.
Составной (или композитный) B-tree индекс — это индекс, который включает несколько столбцов таблицы. В отличие от обычного индекса на один столбец, он хранит значения всех указанных полей в отсортированном виде, что позволяет базе данных эффективно обрабатывать запросы, использующие эти поля вместе.
B-tree индекс на несколько полей работает по принципу лексикографической сортировки: сначала записи сортируются по первому полю, затем по второму, и так далее. Это означает, что индекс эффективен для запросов, которые используют поля в том же порядке, что и в определении индекса. Например, индекс на (a, b) ускорит запросы с условиями WHERE a = 1 AND b = 2, а также WHERE a = 1, но не будет полезен для WHERE b = 2 без условия на a.
Рассмотрим таблицу заказов:
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
total DECIMAL
);
-- Создание составного индекса
CREATE INDEX idx_customer_date ON orders (customer_id, order_date);
-- Запрос, который эффективно использует индекс
SELECT * FROM orders WHERE customer_id = 123 AND order_date > '2023-01-01';
-- Запрос, который не сможет использовать индекс полностью
SELECT * FROM orders WHERE order_date > '2023-01-01';В первом запросе индекс помогает быстро найти все заказы конкретного клиента за период. Во втором запросе индекс не будет использоваться, так как первое поле (customer_id) не задано.
Составные B-tree индексы — мощный инструмент оптимизации запросов, когда фильтрация или сортировка происходит по нескольким полям. Правильное проектирование таких индексов требует понимания порядка полей и типичных запросов, что позволяет значительно повысить производительность базы данных.