У меня есть база данных в производстве с одной таблицей, которая стала чрезвычайно большой (много накопленных данных).
Чтобы повысить производительность запросов, я использовал оптимизатор sql-сервера, который предложил новый индекс.
Итак, я сделал копию производственной базы данных для тестирования, и она повышает производительность, однако моя проблема в том, что для создания индекса потребовалось около 24 часов, а при создании индекса приложение непригодно.
Для этого конкретного приложения, если быть в течение нескольких часов, это не проблема, но будет 24-часовой простоя, и я ищу способ создания этого индекса, не делая этого.
На данный момент у меня есть только несколько идей.
Одна идея - скопировать резервную копию на другой сервер. Примените новый индекс и любые другие изменения. Скопируйте резервную копию на рабочий сервер. Снимите приложение и слейте все новые данные с тех пор, как я взял резервную копию.
Конечно, у этого есть свой набор проблем, таких как необходимость объединить данные вместе, поэтому мне не нравится эта идея по этой причине.
Это стандартный редактор SQL Server 2008.
Обычно я устанавливаю изменения базы данных на script.
UPDATE: Другая идея заключалась бы в том, чтобы переместить архивные данные из основной таблицы в течение нескольких дней в куски. Затем создайте индекс, когда таблица станет достаточно маленькой. Затем медленно перенастройте данные.