Size: a a a

2020 November 06

yツ

yesworld ツ in MySQL
Всем привет.

Небольшой вопрос по индексам, есть 3 поля у таблицы по которым будет поиск. Могут все поля участвовать в запросе, а может быть каждый по отдельности..

Вот думаю, как лучше сделать, сделать совместную индексацию по ним или по отдельности на каждый столбец?
источник

IZ

Ilia Zviagin in MySQL
yesworld ツ
Всем привет.

Небольшой вопрос по индексам, есть 3 поля у таблицы по которым будет поиск. Могут все поля участвовать в запросе, а может быть каждый по отдельности..

Вот думаю, как лучше сделать, сделать совместную индексацию по ним или по отдельности на каждый столбец?
Это зависит от запросов
источник

G

Grigorij in MySQL
Тут сложный вопрос. Все сильно зависит от данных.
источник

IZ

Ilia Zviagin in MySQL
Да, и от данных , конечно.
источник

G

Grigorij in MySQL
Если каждое из полей сильно уменьшает итоговую выборку, то можно по индексу на каждое поле
источник

G

Grigorij in MySQL
Если нет, то уже нужно составные под запросы придумывать
источник

yツ

yesworld ツ in MySQL
Ilia Zviagin
Да, и от данных , конечно.
Тоже верно.. я че то не подумал об этом.
источник

IZ

Ilia Zviagin in MySQL
yesworld ツ
Всем привет.

Небольшой вопрос по индексам, есть 3 поля у таблицы по которым будет поиск. Могут все поля участвовать в запросе, а может быть каждый по отдельности..

Вот думаю, как лучше сделать, сделать совместную индексацию по ним или по отдельности на каждый столбец?
Если могут и вместе и по отдельности, то наверное надо создать один индекс со всеми полями и по индексу на каждое поле . Но это всё равно надо думать.

По идее , надо по индексу на каждое сочетание полей, указываемых в запросе, но там ещё нужно дублирующие индексы выбросить.
источник

IZ

Ilia Zviagin in MySQL
Ну и про селективность подумать тоже — если индексы неселективные в какой-то комбинации полей — не создавать такой индекс
источник

G

Grigorij in MySQL
Три составных, кстати, полностью перекрывают все варианты запросов
источник

G

Grigorij in MySQL
123 231 321
источник

G

Grigorij in MySQL
123 231 312
источник

G

Grigorij in MySQL
Точнее так
источник

IZ

Ilia Zviagin in MySQL
Grigorij
Три составных, кстати, полностью перекрывают все варианты запросов
Да, но может быть у него какие-то хитрости ещё будут
источник

G

Grigorij in MySQL
Но это оверхед
источник

yツ

yesworld ツ in MySQL
Ну в пару столбцах данные не сильно варьируются. Там скажем так Енам от 1 до 7.

А 3й столбец это интежир таймстамп.
источник

IZ

Ilia Zviagin in MySQL
Grigorij
Но это оверхед
Да не, наверное это будет лучший вариант ...
источник

IZ

Ilia Zviagin in MySQL
Grigorij
Но это оверхед
Во, видишь, уже пошло-поехало...
источник

yツ

yesworld ツ in MySQL
Ilia Zviagin
Во, видишь, уже пошло-поехало...
Ну вот)
источник

IZ

Ilia Zviagin in MySQL
yesworld ツ
Ну в пару столбцах данные не сильно варьируются. Там скажем так Енам от 1 до 7.

А 3й столбец это интежир таймстамп.
индекс должен давать на одно значение отбор где-то от одного процента записей и меньше.
Если больше — нет смысла отдельно по такому полю индекс делать.

То же и по сочетанию полей.
источник