Я принял решение, основываясь на обсуждении с другими коллегами: отдельные данные LOB (также столбцы SomeID и Date) в отдельных данных в другой таблице.
Самое важное: я пропустил оценку частоты обновления столбцов и как часто запрашиваются данные и когда они становятся достаточно старыми, чтобы не быть интересными в подавляющем большинстве (но не во всех) случаях.
И это то, что имеет значение в этом случае.
Итак, придумали:
MyTable
(
SomeID varchar(20)-- queried most often / Updated never
Date DateTime -- queried most often / Updated never
Status VarChar(10) -- queried most often / Updated few times after insert
Title VarChar(50) -- queried most often / Updated never
-- some more columns here
SomeSmallXML xml -- queried quite often / Updated few times after insert
SomeOtherSmallXML xml -- queried quite often / Updated never
MyData varbinary(max) -- queried rarely / Updated never
MyOtherData varbinary(max) -- queried rarely / Updated 1 shortly after insert
)
Итак, как видно, некоторые данные больших объектов - MyData и MyOtherData varbinary(Макс) становится статичным после короткого времени.Они достаточно большие, поэтому я хотел бы хранить их на диске и в какой-то момент поставить на раздел только для чтения.Чем более свежая дата, тем чаще мне нужны «MyData» или «MyOtherData».
Итак, окончательный дизайн выглядит примерно так:
MyTable
(
SomeID varchar(20)
Date DateTime
Status VarChar(10)
Title VarChar(50)
-- some more columns here
SomeSmallXML xml
SomeOtherSmallXML xml
)
MyTableLOB
(
SomeID varchar(20)
Date DateTime -- used for partitioning
MyData varbinary(max)
MyOtherData varbinary(max)
)