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