А как вы поддерживаете их синхронизацию между тестовой и производственной средами?
Когда дело доходит до индексов таблиц базы данных, моя философия заключается в том, что они являются неотъемлемой частью написания любого кода, который запрашивает базу данных. Вы не можете вводить новые запросы или изменять запрос, не анализируя влияние на индексы.
Так что я делаю все возможное, чтобы синхронизировать мои индексы между всеми моими средами, но, честно говоря, я не очень хорошо автоматизирую это. Это своего рода случайный, ручной процесс.
Я периодически проверяю статистику индекса и удаляю ненужные индексы. Я обычно делаю это, создавая скрипт удаления, который затем копирую обратно в другие среды.
Но кое-где индексы создаются и удаляются вне обычного процесса, и действительно трудно понять, в чем различия.
Я нашел одну вещь, которая действительно помогает, - это использовать простые числовые индексные имена, такие как
idx_t_01
idx_t_02
где t - краткое сокращение таблицы. Я считаю, что обслуживание индекса невозможно, когда я пытаюсь разобраться со всеми задействованными столбцами, например,
idx_c1_c2_c5_c9_c3_c11_5
Слишком сложно дифференцировать подобные индексы.
Есть ли у кого-нибудь действительно хороший способ интегрировать ведение индексов в систему контроля версий и жизненный цикл разработки?