2009-04-21 3 views
6

Я пытаюсь сделать выбор между двумя возможными реализациями и очень хочется, чтобы выбрать лучший :)Производительность накладных расходов добавления поля BLOB в таблицу

мне нужно добавить необязательное поле BLOB в таблицу, которая в настоящее время только имеет 3 простых поля. Предполагается, что новое поле будет использоваться менее чем на 10%, а может быть, даже меньше, чем в 5% случаев, поэтому для большинства строк это будет пустым, ведь большинство наших клиентов, вероятно, никогда не будут иметь никаких данных BLOB.

Первый наклон коллеги состоял в том, чтобы добавить новую таблицу, чтобы удерживать только BLOB, с (нулевым) внешним ключом в первой таблице. Он прогнозирует, что при запросе первой таблицы это будет иметь преимущества в производительности.

Мои мысли были в том, что более логично и проще хранить BLOB непосредственно в исходной таблице. Ни один из наших запросов не делает SELECT * из этой таблицы, поэтому моя интуиция заключается в том, что ее хранение напрямую не будет иметь значительных издержек производительности.

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

Использование MSSQL и Oracle.

ответ

5

Для MSSQL капли будут храниться на отдельной странице в базе данных, чтобы они не влияли на производительность, если столбец равен NULL.

Если вы используете тип данных IMAGE, данные всегда сохраняются в строке. Если вы используете тип данных varbinary (max), то, если данные> 8kb, они хранятся вне строки, в противном случае они могут быть сохранены в строке в зависимости от параметров таблицы.

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

 Смежные вопросы

  • Нет связанных вопросов^_^