Что такое составной индекс?

Составной индекс — это индекс, построенный по нескольким колонкам. Такие индексы имеет смысл использовать, когда в одном запросе фигурируют более одной колонки. Mysql поддерживает составные индексы для любых типов таблиц.

1. Фильтрация по нескольким колонкам

SELECT * FROM table WHERE date = '2020-10-10' AND name = 'Den'

Наиболее эффективный индекс будет таким:

CREATE INDEX date_name ON table(date, name)

2. Фильтрация и сортировка

SELECT * FROM table WHERE name = 'Den' ORDER BY date

Наиболее эффективный индекс будет таким:

CREATE INDEX date_name ON table(name, date)

# Первой должна идти колонка, по которой фильтруем

Количество колонок в индексе может быть любое:

SELECT * FROM table
	 WHERE date = '2020-10-10' AND type = 2 AND name = 'Den'
	 ORDER BY amount DESC
CREATE INDEX date_name ON table(date, type, name, amount)

Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень