Как лучше проиндексировать таблицу MySQL?

228
01 февраля 2018, 15:50

Имеется множество запросов к базе следующего вида:

SELECT `id` FROM `table` WHERE `ip` = '000.000.000.000' ORDER BY `updated_at` DESC

Вопрос: Правильно будет проиндексировать столбцы ip и updated_at вместе или только столбец ip? Индексы какого типа необходимо использовать?

В таблице > 6 миллионов строк, не затормозит ли работу индексация, если я прямо сейчас сделаю запрос на создание индекса?

Answer 1

Индексация наоборот улучшает оптимизацию. В данном случае Вам нужно сделать составной индекс ip и updated_at CREATE INDEX ip_updated ON users(ip, updated_at);

Ваш же случай описан здесь

Сортировка

Составные индексы также можно использовать, если выполняется сортировка:

SELECT * FROM users WHERE gender = 'male' ORDER BY age В этом случае нам нужно будет создать индекс в другом порядке, т.к. сортировка (ORDER) происходит после фильтрации (WHERE):

CREATE INDEX gender_age ON users(gender, age); Такой порядок колонок в индексе позволит выполнить фильтрацию по первой части индекса, а затем отсортировать результат по второй.

READ ALSO
Как конвертировать дамп базы mysql в postgresql?

Как конвертировать дамп базы mysql в postgresql?

Есть файл dumpsql Он предназначен для MySQL

273
MySQL ответ в виде JSON

MySQL ответ в виде JSON

Доброго вечера! Может кто подскажет, если способ получить в ответ, вместо строки её JSON, те

253
Модульные тесты C# [требует правки]

Модульные тесты C# [требует правки]

Имеется код, для которого нужно создать два теста (примеры приложил)До этого момента, модульные тесты не делал в Visual Studio

360