SQL Server - имеет ли значение порядок столбцов?

Что касается производительности и оптимизации:

  • Имеет ли значение, в каком порядке я помещаю столбцы при построении таблицы в SQL Server?
  • Имеет ли значение, является ли мой первичный ключ первым столбцом?
  • Имеет ли значение при построении многопольного индекса, если столбцы являются смежными?
  • Можно ли с помощью синтаксиса ALTER TABLE указать, в какую позицию я хочу добавить столбец?
    • Если нет, как я могу переместить столбец в другое положение?

См. stackoverflow.com/questions/6692021/…

gbn 17.10.2011 10:07

Вот аналогичный вопрос по DBA.SE: Имеет ли значение порядок столбцов в определении таблицы?

Nick Chammas 05.06.2012 21:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
26
2
8 550
6

Ответы 6

Я бы сказал, что ответ на все эти вопросы - НЕТ, хотя мой опыт работы с MS-SQL идет вплоть до SQL2000. В SQL 2005 может быть другая история

Нет первым 3, потому что индекс будет содержать данные, а не последний раз.

Для четвертого маркера: Нет, вы не можете указать, где вы хотите добавить столбец. Вот синтаксис ALTER TABLE: https://msdn.microsoft.com/en-us/library/ms190273.aspx

В MySQL они предлагают ALTER TABLE ADD ... AFTER ... но этого нет в T-SQL.

Если вы хотите изменить порядок столбцов, вам придется перестроить таблицу.

Обновлено: для вашего последнего пункта маркера последний вам придется УДАЛИТЬ таблицу и воссоздать ее, чтобы изменить порядок столбцов. Некоторые графические инструменты, которые управляют базами данных SQL, сделают это за вас и сделают так, будто вы переупорядочиваете столбцы, так что вы можете захотеть изучить это.

ссылка исправлена. борьба с гнилью ссылок с [404]

Tim Abell 06.08.2015 21:18

В SQL Server 2005 размещение столбцов переменной длины, допускающих значение NULL, влияет на пространство - размещение столбцов переменного размера, допускающих значение NULL, в конце определения может привести к меньшему потреблению места.

SQL Server 2008 добавляет функцию столбца «SPARSE», которая сводит на нет это различие.

См. здесь.

Для первой пули:

да, порядок столбцов делает имеет значение, по крайней мере, если вы используете устаревшие BLOB-объекты image, text или ntext и используете SQL Server

В таких случаях у вас должны быть эти столбцы в «конце» таблицы, и каждый раз, когда вы их извлекаете, производительность падает.

Если вы извлекаете данные из такой таблицы с помощью DAL, это идеальное место для шаблона Ленивая загрузка.

Я думал, что прокомментировал. Полный мусор stackoverflow.com/questions/6692021/…

gbn 17.10.2011 10:01

Порядок столбцов не имеет значения при создании таблицы. Мы можем расположить столбцы при извлечении данных из базы данных. Первичный ключ может быть установлен для любого столбца или комбинации столбцов.

Другие вопросы по теме