Ответ
Для ускорения запросов используйте индексы на столбцах, участвующих в условиях WHERE, JOIN, ORDER BY и GROUP BY.
Основные типы индексов и их применение:
- B-tree (B-дерево): Стандартный индекс. Оптимален для точных совпадений (
=), диапазонов (>,<,BETWEEN) и сортировки. Поддерживается почти всеми СУБД. - Hash (Хэш): Только для операций точного совпадения (
=). Обычно быстрее B-tree для=, но не поддерживает диапазоны и менее гибок. - Составной (композитный) индекс: Создается по нескольким столбцам. Порядок столбцов критически важен. Индекс
(last_name, date_of_birth)будет работать для поиска поlast_nameи по паре(last_name, date_of_birth), но не по одномуdate_of_birth.
Пример создания в SQL:
-- Стандартный B-tree индекс
CREATE INDEX idx_users_email ON users(email);
-- Составной индекс
CREATE INDEX idx_users_name_dob ON users(last_name, date_of_birth);
Важно: Индексы ускоряют чтение (SELECT), но замедляют запись (INSERT, UPDATE, DELETE), так как их необходимо поддерживать в актуальном состоянии. Не индексируйте все подряд — анализируйте частые и медленные запросы.