В работе моей жены идет спор о том, чтобы просто использовать varchar(255)
для всех varchar
полей во временных таблицах хранимые процедуры. По сути, один лагерь хочет использовать 255, потому что он всегда будет работать, даже если определение изменится, а другой лагерь хочет придерживаться размера в исходных таблицах для потенциальных улучшений производительности.
Правильно ли устроен лагерь? Есть ли другие последствия? Они используют SQL Server.
sql-server
performance
datatypes
temporary-tables
Брайан Никель
источник
источник
MAX()
в миксе.Ответы:
В зависимости от того, как вы используете временные таблицы, вы можете столкнуться с проблемой усечения данных.
Этот пример немного надуманный, но он иллюстрирует мою точку зрения. Пример:
Временная таблица с радостью примет новое значение varchar длиной 59. Однако ваша пользовательская таблица не смогла. В зависимости от того, как вы обрабатываете это в своей процедуре, это может привести к усечению или ошибке.
Если вы не документируете и не учитываете эти проблемы, ваша процедура может работать неожиданно.
Лично я не думаю, что есть ответ на этот вопрос, который является правильным в 100% случаев. Это действительно зависит от того, как вы используете эти временные таблицы.
Надеюсь это поможет
источник
Я бы склонялся к использованию фактической длины поля.
Недавно я прочитал, что временные таблицы MySQL (я предполагаю, что SQL Server аналогичен) выделяют достаточно памяти для хранения максимально возможной длины для каждого
varchar
столбца ... Системный подход к выделению 200% -500% необходимой памяти дляvarchar
полей во всех хранимые процедуры кажутся ненужным использованием системных ресурсов. Если вы когда-либо используете значительный объем памяти для создания этих временных таблиц, вы можете излишне требовать память, которая использовалась для кэширования, создавая дополнительную работу для сервера в некоторый момент в будущем, даже после выполнения процедур хранения.Изменить: см. Ответ Билла Карвина: /programming/1962310/importance-of-varchar-length-in-mysql-table
источник