Краткий ответ: Я согласен с OMG Ponies, порядок столбцов не важен.Если у вас нет кластеризованного индекса, просто удалите и заново создайте таблицу, а не запустите ALTER TABLE x ADD col .
Длинный ответ: Если в вашей таблице естьДостаточно много данных (на ум приходит 50 МБ), тогда вам лучше будет воссоздать таблицу, а не ALTER TABLE x ADD col План размещения страниц данных для таблицы рассчитывается во время создания таблицы, поэтому приПри добавлении столбца SQL Server обычно помещает данные нового столбца на отдельных страницах и выдвигает указатели с существующих страниц данных на новые страницы данных для добавленного столбца.Если вы собираетесь широко использовать новый столбец, то IO таблицы будет очень плохим, поскольку чтение даже 1 строки потребует чтения как минимум 2 страниц.Сканирование таблиц также будет работать плохо, так как всегда будут выполняться прямые указатели, в результате чего при чтении таблицы, которые обычно последовательно перемещаются назад и вперед на вашем диске во время чтения.
В этом случае лучше переименовать существующую таблицу,воссоздайте свою таблицу с новым столбцом, вставьте в table_name выберите col1, col2, 'null или default для нового col', col3 из temp_renamed_table и, наконец, удалите старую таблицу, которую вы переименовали.Страницы данных будут намного лучше организованы, и ваш ввод-вывод будет быстрее, несмотря на то, что с точки зрения разработчика SQL он выглядит одинаково, чем при использовании ALTER TABLE .Если у вас есть кластеризованный индекс, таблица будет реорганизована, когда вы добавите столбец, и расщепление страниц будет менее вероятным.Вы также можете запустить ALTER TABLE x REBUILD , если у вас есть SQL Server 2008, у вас нет кластерного индекса и много времени, когда пользователи не используют вашу таблицу.Трудно комментировать вашу стратегию индексирования, не зная гораздо большего.
Это гораздо лучшая причина для воссоздания таблицы, чем что-то вроде косметического порядка столбцов.