T-SQL: ВЫБРАТЬ В разреженную таблицу? - PullRequest
0 голосов
/ 26 августа 2010

Я переносу большое количество в основном пустых таблиц в SQL Server 2008.

Таблицы являются вертикальными разделами одной большой логической таблицы.

Проблема в том, что в этой логической таблице более 1024столбцы.

Учитывая, что большинство полей пустые, я планирую использовать разреженную таблицу.

Для всех моих таблиц до сих пор я использовал SELECT ... INTO, который имеетработал очень хорошо.

Однако теперь у меня "CREATE TABLE не удалось, потому что столбец 'xyz' в таблице 'MyBigTable' превышает максимум 1024 столбца."сделать SELECT ... INTO, чтобы он создавал новую таблицу с разреженной поддержкой?

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Что вы, вероятно, хотите сделать, это создать таблицу вручную и заполнить ее оператором INSERT ... SELECT.

Чтобы создать таблицу, я бы порекомендовал создать сценарии для различных таблиц компонентов и объединить их определения, сделав их все SPARSE по мере необходимости. Затем просто запустите свой единственный оператор CREATE TABLE.

0 голосов
/ 26 августа 2010

Вы не можете (и, вероятно, вообще не хотите).См. INTO Clause (TSQL) для документации MSDN.

Проблема в том, что разреженные таблицы являются физической характеристикой хранения, а не логической характеристикой, поэтому механизм СУБД не узнаетскопировать эту характеристику.Кроме того, это свойство всей таблицы, и SELECT может иметь несколько базовых исходных таблиц.См. Раздел «Примечания» на странице, на которую я ссылался, где обсуждается, как использовать только сведения об организации по умолчанию.

...