@RA
RA
26 Mar 2018

Вот вы индексы к mysql таблице добавляете сразу при создании таблицы, или как-нибудь потом когда окажется что селекты тормозят?

Рекомендовано: skobkin-ru
26 Mar 2018

RA, некоторые — сразу, некоторые — потом, когда тормозить начинает.

26 Mar 2018

есть какой-то гайд что если ты сортируешь или джойнишь по полю, то будь добр создай индекс?
Или этоь дурная практика?

#mdlvu/2 в ответ на /1
26 Mar 2018

Ну тут (ИМХО, т.к. я не дофига оптимизатор) надо подходить с головой.
Чем больше индексов - тем тормознее вставка. Не всегда и нужно добавлять индекс, в некоторых ситуациях СУБД отсортирует быстрее без него (например, маленькая выборка с WHERE по полю с индексом и ORDER по полю без).

#mdlvu/3 в ответ на /2
26 Mar 2018

тут такая перепалочка вышла


и у меня даже нет линка, чтобы отстоять свою точку зрения. А делать тесты лень. (Легче самому добавить и забить, но это должен делать исполнитель) Да сейчас таблицы не содержат нихуя, но придёт время и записей будет, пусть не миллион но 100 тыщ точно.

Так может рили индекс не нужен?

26 Mar 2018

RA, если у сервера достаточно памяти, то 100к строк не проблема вообще. Даже без индекса.
А на 150М строк индексы не особо помогают. :(
У меня была табличка (не помню уже сколько строк), так у нее select count(*) from table тормозило. Я количество строк смотрел через explain select count(*) from table. :D

#mdlvu/5 в ответ на /4
26 Mar 2018

Daemon, count в принципе медленная операция.

#mdlvu/6 в ответ на /5
26 Mar 2018

RA, запили бенчмарк с индексом и без и сравни.

#mdlvu/7 в ответ на /4
26 Mar 2018

RA, когда понятна логика работы, то сразу. Если нет. то пусть сначала данные зальют и побольше.

26 Mar 2018

RA, перегрузить таблицы индексами - та еще хуйня.
Нужен дохуя слдожный поиск - ебашь в эластик серч, например, а не дрочи индексы на каждый потенциальный случай в WHERE.

26 Mar 2018

azzz, а если данных овер-доебелион, то делаешь шардирование. При работе с большим количеством данных школьные решения в лоб не работают и приходится включать фантазию всё таки.
А если надо делать поиск по овер-слжным моделям данных с дохуиллионом связей, то можно ебашить в колоночные базы данных, например, и денормализовать данные в плоскую структуру. Тоже работает где-то как-то.
Но решать оптимизацию тупо добавляя побольше индексов не стоит.

Плюс к индексам: еще стоит помнить про составные индексы. Индекс по a и b на запросе WHERE a = 1 and b =2 будет лучше, чем два отдельных индекса отдельно по полям a и b.

#mdlvu/10 в ответ на /9
26 Mar 2018

arts, смотря какой движок и БД. mysql с MyISAM быстро, mysql InnoDB по индексу так себе, без индекса пиздец, postgresql count * лучше вообще избегать и делать это по полю с индексом.

#mdlvu/11 в ответ на /6
26 Mar 2018

@hardworm, там была mysql + myisam + 250 миллионов строк.

#mdlvu/13 в ответ на /11
26 Mar 2018

Daemon, myISAM всегда знает сколько у него строк в таблице

#mdlvu/14 в ответ на /13
26 Mar 2018

@hardworm, да, был не прав, там действительно InnoDB.

#mdlvu/15 в ответ на /14

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.