Подтвердить что ты не робот

Имеет ли значение порядок столбцов в ваших таблицах MySQL?

Во время обучения mysql я читал, что вы можете выполнить следующий оператор при добавлении столбца в таблицу mysql:

ALTER TABLE contacts ADD email VARCHAR(60) AFTER name;

или

ALTER TABLE contacts ADD email VARCHAR(60) FIRST;

Когда вы захотите это сделать? Может ли порядок столбцов использоваться для оптимизации запросов? Должны ли длинные блоки быть последним столбцом для оптимизации потребления пространства? Или эти команды существуют по какой-то другой причине?

4b9b3361

Ответ 1

Это, однако, повлияет на порядок результата в select * from mytable.

Вот почему вы всегда должны указывать столбец в инструкции select, например. select col1, col2 from mytable. Но если вы знаете, что приложение использует *, тогда вы должны позаботиться о том, чтобы добавить столбец.

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

Ответ 2

Вопрос не имеет ничего общего с реляционной моделью или SQL. Это вопрос производительности.

В некоторых базах данных более эффективно упорядочивать столбцы определенным образом из-за способа доступа к диску. Есть ли существенное преимущество и для платформы. Это проблема ввода-вывода на низком уровне, связанная с тем, как разрабатывается базовое хранилище и каким способом он доступен при работе с двигателем. Поставщики проприетарных двигателей обычно предоставляют эту информацию через свои отделы образования и обучения.

Я думаю, вам придется поговорить с тем, кто знает подробные подробные сведения о модели хранилища и методах ввода-вывода для MySQL на вашей конкретной платформе или кто-то, кто имеет это на вашей платформе, чтобы получить ответ,

Это вполне возможно, что они будут размещены на диске оптимизированным образом и скрыть этот порядок столбцов от вас.

Ответ 3

Я думал, что он не имеет значения производительности, но в некоторых случаях - при использовании индексов.

Пример.

Я использовал таблицу соединений:

| category_id | user_id |

Оба столбца были unsigned int (10), а primary key ( category_id, user_id ) Обратите внимание на порядок столбцов. Когда я начал выбирать из этой таблицы с where user_id = ? - производительность была низкой.

После того, как я изменил порядок столбцов (сначала сделал user_id), он начал выбирать время быстрее.

Ответ 4

A "Когда вы хотите использовать это", а не проблему с производительностью.

Репликация на основе строк будет разрываться, если порядок столбцов отличается между основным и подчиненным, а типы столбцов несовместимы (ошибка 1677).

ALTER TABLE контакты ИЗМЕНИТЬ email VARCHAR (60) ПОСЛЕ имени;

будет одним из способов исправить эту проблему.

Ответ 5

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

Ответ 6

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

Ответ 7

Реляционная модель не имеет понятия упорядочения столбцов внутри строк и понятия упорядочения строк в таблицах.