Короткий ответ: Я согласен с OMG Ponies, порядок следования столбцов не важен. Если у вас нет кластерного индекса, скорее запустите и заново создайте таблицу, чем запустите ALTER TABLE x ADD col.
Длинный ответ: Если таблица имеет справедливый бит данных (50Mb приходит на ум), то вам будет лучше воссоздает таблицу, а не ALTER TABLE х ADD Col План распределения страниц данных для таблица рассчитывается во время создания таблицы, поэтому при добавлении столбца SQL Server обычно помещает данные вашего нового столбца на отдельные страницы и помещает указатели с существующих страниц данных на новые страницы данных для добавленного столбца. Если вы собираетесь использовать новый столбец экстенсивно, то ваша таблица IO будет довольно плоха, так как чтение даже 1 строки потребует чтения не менее 2 страниц. Сканирование таблицы также будет работать плохо, так как указатели на указатели всегда будут выполняться, что приведет к сканированию таблиц, которые обычно являются последовательными, чтобы прыгать назад и вперед на вашем диске во время чтения.
В этом случае лучше переименовать существующую таблицу, воссоздать таблицу с новым столбцом, вставить в table_name выбрать col1, col2, «null» или «default» для нового col », col3 из temp_renamed_table и, наконец, отбросить старую таблицу, которая вы переименовали. Страницы данных будут намного лучше организованы, и ваш IO будет быстрее, несмотря на то, что он выглядит одинаково с точки зрения разработчика SQL, чем когда используется ALTER TABLE. Если у вас есть кластеризованный индекс, таблица будет реорганизована, если вы добавите разделение столбцов и страниц с меньшей вероятностью. Вы также можете запустить ALTER TABLE x REBUILD, если у вас есть SQL Server 2008, у вас нет кластерного индекса и много времени, когда пользователи не используют вашу таблицу. Трудно комментировать вашу стратегию индексирования, не зная гораздо большего.
Это гораздо лучшая причина для воссоздания таблицы, чем что-то косметическое, как порядок столбцов.
Сэр Вобин, это первое, что я слышал, что «новые столбцы» будут добавлены таким образом. Можете ли вы опубликовать некоторые онлайн-ссылки, которые обсуждают это? (Это звучит разумно, я просто хочу получить гораздо больше глубины и подробностей по этому вопросу, и я не уверен, как Google тема.) –
Мне нравится, что Филипп хотел бы видеть любые документы, которые у вас есть на этом ... было бы действительно полезно. – scarpacci
Концепции, которые вы используете, это «разделение страниц» и «указатели пересылки». Вот два отличных обсуждения с методами, как их найти на ваших столах, включая эксперименты, чтобы определить, когда они произойдут. http://bit.ly/bIrQvp и http://bit.ly/df3Mp0 Вот ссылка на разрывы страниц, происходящие в результате добавления столбца в существующую таблицу. http://bit.ly/dAxPs0 –