SQL Server - имеет ли значение порядок столбцов? - PullRequest
24 голосов
/ 29 августа 2008

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

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

Ответы [ 6 ]

8 голосов
/ 29 августа 2008

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

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

См. здесь .

3 голосов
/ 29 августа 2008

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

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

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

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

3 голосов
/ 29 августа 2008

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

1 голос
/ 29 августа 2008

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

0 голосов
/ 10 июля 2017

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

0 голосов
/ 29 апреля 2010

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

Да , порядок столбцов имеет значение , по крайней мере, если вы используете устаревшие BLOB image, text или ntext и используете SQL Server <= 2005 </p>

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...