У меня есть таблица, которая содержит несколько столбцов, а затем 2 заключительных (обнуляемых) столбца, которые являются varbinary (на самом деле, они являются типами географии SQL 2008, но я хочу сохранить эту независимость от базы данных).
Я набрал около 500 МБ с 200К строк. Проблема в varbinary - и мне нужны данные.
Итак, мне было интересно, если это плохо, если я сделаю следующее: -
- Создание отдельной FILEGROUP: SpatialData.mdf
- Создать новую таблицу, назначенную этой новой файловой группе.
- Переместить все пространственные данные (читай: последние два поля) из исходной таблицы в новую таблицу. Новая таблица имеет внешний ключ к исходной таблице.
- Создание представления, представляющего обе таблицы.
Теперь представление будет внешним левым соединением, поскольку взаимосвязь такова: новая таблица имеет нулевую или однорядную связь с исходной таблицей.
EG.
Оригинальный стол
FooId INT PK NOT NULL IDENTITY
Blah VARCHAR(..) NOT NULL
Boo WHATEVER NOT NULL
Новая таблица
FooID PK FK NOT NULL
Spatial_A VARBINARY(MAX)/GEOGRAPHY
Spatial_B VARBINARY(MAX)/GEOGRAPHY
Причина, по которой я хочу знать, если это плохо, заключается в представлении и в том, как представление выполняет объединение в пространственной таблице. Я буду часто использовать вид. В настоящее время я просто делаю запросы к исходной таблице (потому что новая таблица еще не существует). При добавлении этого соединения и отношений PK / FK это повлияет на производительность?
Зачем разбивать данные? Мне нужно время от времени загружать живую БД на наши серверы разработки. На самом деле мы не слишком заботимся об этих двух пространственных полях, поэтому не иметь их хорошо. Поэтому размер загружаемой базы данных будет намного меньше.
Мысли