Метод, который вы используете, CONCAT() LIKE ?
обязан выполнить сканирование таблицы. Так что он будет медленнее прямо пропорционально размеру вашего стола.
Если вам нужно выполнить полнотекстовый поиск по нескольким столбцам и вы хотите, чтобы он работал эффективно, вам следует узнать о функциях полнотекстового поиска MySQL .
Я провел презентацию, сравнивая запросы типа LIKE '%pattern%'
старой школы и запросы с использованием полнотекстовых индексов. Это зависит от того, сколько у вас данных, но полнотекстовые индексы могут сделать ваши запросы в сотни или тысячи раз быстрее , чем выполнять поиск, как вы это делаете.
См. Мою презентацию: Развертывание полнотекстового поиска .
Очень примерно:
Мы также создаем ответвления для будущих версий или функций. Они в конечном счете объединяются в соединительную линию.
Мы сохраняем наши структуры дб синхронизируемыми с пользовательским инструментом сравнения дб, который выполняется во время развертывания.
Сервер подготовки является копией Вашей продуктивной среды, которая максимально актуальна. На моем текущем проекте мы можем сохранить каждый выпуск независимым друг от друга, таким образом, наш "сервер подготовки" является нашим рабочим сервером, к которому просто получают доступ от другого URL.
Примечания и discreprencies:
Все шаги имеют некоторое изменение в зависимости от размера Вашего проекта. Чем больше Ваш проект, тем лучше преимущество от избирательного подхода к выбору и разделения среды. В меньших проектах они могут просто быть приемниками времени и часто игнорируются или обходятся.
Для разъяснения существует стек Development, стек QA и стек Staging. В зависимости от Вашего размера проекта QA мог бы подготавливать, Производство могло бы подготавливать, или некоторая комбинация этого. Разделение Dev и стопок QA является самым важным.
На шагах выше, я принимаю и код и соответствующие данные, является имеющим версию или прослежен. Наличие выпуска и процесса сборки, который принимает управляющую информацию во внимание, делает выпуск очень, очень легким.
В проекте маленьком среднего размера, там может или может не быть ответвление выпуска; это зависит от частоты изменения кода. Кроме того, в зависимости от частоты изменения кода и размера Вашего проекта, можно интегрировать полное ответвление QA к ответвлению Выпуска или избирательно подойти к выбору определенных изменений для интеграции к ответвлению выпуска.
FWIW, я нашел, "что сценарии миграции" имеют мало ценности. Они всегда - одноразовый сценарий с небольшим повторным использованием и делают откаты болью в заднице. Его намного более легкое, я требовал бы лучше, иметь назад совместимое приложение. После нескольких выпусков (когда откат является смехотворным), очистка данных должна быть сделана при необходимости.