Повышение производительности при добавлении поля BLOB в таблицу - PullRequest
6 голосов
/ 21 апреля 2009

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

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

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

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

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

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

1 Ответ

5 голосов
/ 21 апреля 2009

Для MSSQL большие двоичные объекты будут храниться на отдельной странице в базе данных, поэтому они не должны влиять на производительность, если столбец равен нулю.

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

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

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