Проверяет знание типов индексов в базах данных и их применимость для запросов с условиями сравнения по числовым полям.
B-tree (сбалансированное дерево) — это структура данных, которая хранит ключи в отсортированном порядке. Каждый узел дерева содержит несколько ключей и ссылки на дочерние узлы. Благодаря балансировке, операции поиска, вставки и удаления выполняются за логарифмическое время O(log n). Для запросов с условиями сравнения, таких как WHERE age > 30 или WHERE price BETWEEN 100 AND 200, B-tree позволяет эффективно находить начальную точку диапазона и последовательно перебирать значения до конца диапазона.
В отличие от хеш-индексов, которые работают только с точным равенством, B-tree поддерживает операции упорядочивания. Это критично для условий больше/меньше, так как база данных может использовать индекс для быстрого доступа к первой записи, удовлетворяющей условию, и затем сканировать следующие записи в порядке индекса. Например, для запроса SELECT * FROM products WHERE price > 500 СУБД найдет в B-tree первый ключ больше 500 и пройдется по листьям дерева, не сканируя всю таблицу.
-- Создание B-tree индекса в PostgreSQL
CREATE INDEX idx_products_price ON products (price);
-- Запрос с условием сравнения
SELECT * FROM products WHERE price > 500;
-- План выполнения покажет использование индекса
EXPLAIN SELECT * FROM products WHERE price > 500;В плане выполнения появится строка Index Scan using idx_products_price, что подтверждает эффективность.
B-tree индекс — стандартный выбор для колонок, по которым часто выполняются запросы с диапазонами, сортировкой или группировкой. Он также полезен для внешних ключей и колонок с уникальными значениями. Если ваши запросы используют только точное равенство, можно рассмотреть хеш-индекс, но B-tree остаётся универсальным решением для большинства сценариев.
Итог: B-tree индекс — оптимальный выбор для условий сравнения по числовым полям, так как обеспечивает быстрый поиск диапазонов и поддерживается всеми основными СУБД.