Мне пришлось добавить 64 новых столбца в таблицу, в которой уже было 32 столбца. Для примера:
Customers
(
CustomerID int
Name varchar(50)
Address varchar(50)
City varchar(50)
Region varchar(50)
PostalCode varchar(50)
Country varchar(2)
Telephone varchar(20)
...
NewColumn1 int null
NewColumn2 uniqueidentifier null
NewColumn3 varchar(50)
NewColumn4 varchar(50)
...
NewColumn64 datetime null
...
CreatedDate datetime
LastModifiedDate datetime
LastModifiedWorkstation varchar(50)
LastModifiedUser varchar(50)
)
Большую часть времени большинство этих новых столбцов будут содержать null
.
Также считается, что , если я вертикально разделить эти 64 новых столбца в новую таблицу, то каждый раз, когда я SELECT
получаю от клиентов:
SELECT ...
FROM Customers
придется преобразовать в объединение, чтобы получить секционированные значения (т. Е. никогда не будет увеличения производительности, когда мне не нужны новые столбцы):
SELECT ...
FROM Customers
INNER JOIN Customers_ExtraColumns
ON Customers.CustomerID = Customers_ExtraColumns.CustomerID
Так что это один con для разделения столбцов.
Другое con заключается в том, что мне приходится управлять вставкой строк в две таблицы одновременно, а не в одну.
Последнее con , о котором я могу думать, это то, что SQL Server теперь должен выполнять INNER JOIN
каждый раз, когда я хочу получить доступ к " Customers ". Теперь и навсегда тратятся ресурсы процессора и ввода-вывода для объединения таблиц, которые на самом деле представляют собой одну таблицу - за исключением того, что я решил разделить их.
Итак, мой вопрос: зачем мне их разделять?
Есть ли какое-либо значение в вертикальном разбиении 64 столбцов в отдельной таблице, когда они в основном будут нулевыми? Null занимают очень мало места ....
Какие плюсы?
Редактировать: Почему я даже рассматриваю разделение? В основном это нулевые данные, которые утроят количество столбцов в таблице. Конечно это должно быть плохо!