2009-05-28 50 views
11

私はMaximum Capacity Specifications for SQL Serverを読んでいました。広いテーブルの指定に出くわしました。これは標準的なテーブルとは異なり、より親しみやすい1024個のカラムに限定されている通常の(狭い)テーブルとは対照的に、最大30,000個のカラムを持つことができます。私は広いテーブルのためにgoogled、しかし何も関連性を出てくるようではない。この新しいテーブルタイプはより正式な名前を持っていますか?SQL Server 2008でワイドテーブルを作成するにはどうすればよいですか?使用上の制限は何ですか?

私たちはなぜ2種類のテーブルを持っているのですか?この特別なテーブルを作成するにはどうすればいいでしょうか。あんたは知ってる?

+0

あなたは30,000以上の列の代わりに、道路を意味するのですか? – jvanderh

+0

はい。私の自動スペル矯正師はこの言葉を自動的に何かに変えました。千恩赦 – MikeJ

答えて

9

広いテーブルから

カラムセットとスパース列を使用するテーブルです。それはまだ1行(8019バイト)ごとに同じ幅の制限に従います - したがって、あなたの列が大部分すべてがnullの場合にのみ通常は使用します。

あなたは通常、しかし、これを行うにはしたくない

+1

8 KBの制限は、プリSQL Server 2016のバージョンです。[リンク] https://technet.microsoft.com/en-us/library/ms186981(v = sql.105).aspx –

+1

を参照してください。SQL 2016にはまだバイトがあります1行あたりの制限は8060ですが、行のオーバーフローによってより多くのデータを格納できます。これは2016年に新しくはなく、かなり長い間行われてきました。 https://msdn.microsoft.com/en-us/library/ms143432.aspx –

4

"テーブルを作成したり、ワイドテーブルに変更するには、column setをテーブル定義に追加します。 here

2

...詳細はこちらをご覧ください!行にはサイズ制限があり、関連する表(1対1の関係を持つものを含む)を使用する場合よりもデータの検索が遅くなる可能性があります。私はこれが関連するテーブルよりも良いアイデアだった例はまだ見たことがありません。

2

また、ワイドテーブルは、トランザクションレプリケーションまたはマージレプリケーションでは機能しません。ここにセクションを「スパース列をサポートし、SQL Serverの技術」を参照してください:http://msdn.microsoft.com/en-us/library/cc280604(v=sql.105).aspx

+0

この参照は次のように述べています:「トランザクションレプリケーションはスパース列をサポートしますが、列セットはサポートしていません」と答えを明確にし、未回答の質問http://dba.stackexchange.com/questions/59476/is-it-possible-to-replicate-wide-table-in-ms-sql? – alpav

+0

テーブルをワイドテーブルにするには、スパース列を作成し、列セットを追加する必要があります。列セットを作成しないと、テーブルは1024列に制限されます。 –

関連する問題