Вот вы индексы к mysql таблице добавляете сразу при создании таблицы, или как-нибудь потом когда окажется что селекты тормозят?
тут такая перепалочка вышла
и у меня даже нет линка, чтобы отстоять свою точку зрения. А делать тесты лень. (Легче самому добавить и забить, но это должен делать исполнитель) Да сейчас таблицы не содержат нихуя, но придёт время и записей будет, пусть не миллион но 100 тыщ точно.
Так может рили индекс не нужен?
RA, если у сервера достаточно памяти, то 100к строк не проблема вообще. Даже без индекса.
А на 150М строк индексы не особо помогают. :(
У меня была табличка (не помню уже сколько строк), так у нее select count(*) from table
тормозило. Я количество строк смотрел через explain select count(*) from table
. :D
azzz, а если данных овер-доебелион, то делаешь шардирование. При работе с большим количеством данных школьные решения в лоб не работают и приходится включать фантазию всё таки.
А если надо делать поиск по овер-слжным моделям данных с дохуиллионом связей, то можно ебашить в колоночные базы данных, например, и денормализовать данные в плоскую структуру. Тоже работает где-то как-то.
Но решать оптимизацию тупо добавляя побольше индексов не стоит.
Плюс к индексам: еще стоит помнить про составные индексы. Индекс по a
и b
на запросе WHERE a = 1 and b =2
будет лучше, чем два отдельных индекса отдельно по полям a
и b
.
есть какой-то гайд что если ты сортируешь или джойнишь по полю, то будь добр создай индекс?
Или этоь дурная практика?
Ну тут (ИМХО, т.к. я не дофига оптимизатор) надо подходить с головой.
Чем больше индексов - тем тормознее вставка. Не всегда и нужно добавлять индекс, в некоторых ситуациях СУБД отсортирует быстрее без него (например, маленькая выборка с
WHERE
по полю с индексом иORDER
по полю без).