0

SQL Server 2008 R2 に大きなテーブル (最大 40 ミル レコード) があり、トラフィックが多くなっています (絶えず成長、選択、編集されています...)

これまで、私はこのテーブルの行にそのid(単純な ID キー) でアクセスしていました。それを呼び出すGUID列があります。これは、ほとんどの行で一意ですが、一部の行はその列に対して同じ値を持ちます。

そのGUID列はnvarchar(max)、テーブルには約 10 個のキーと制約が含まれており、インデックスは単純な ID キー列だけです。

何かをクラッシュさせたり、テーブルを使用不可にしたりせずに、この列にインデックスを設定したいと考えています。

どうすればそうできますか?

これはトラフィックが多い大きなテーブルであり、オンラインで利用可能な状態を維持する必要があることに注意してください

ありがとう

4

1 に答える 1

5

ええと、これに対する答えは簡単です (しかし、おそらく気に入らないでしょう): できません。

SQL Server では、インデックス キーを 800 バイト未満にする必要があります。また、キーを常に「行内」に格納する必要があります。NVARCHAR(MAX)列は 800 バイト (最大 2GB) を大幅に超える可能性があり、ほとんどの場合、標準の行データ ページの外に格納されるため、SQL Server ではインデックス キーに列を含めることができませんNVARCHAR(MAX)

選択肢の 1 つは、この GUID 列を実際のUNIQUEIDENTIFIERデータ型 (または少なくともCHAR(32).この変更中にテーブルをオンラインのままにしておく必要がある場合は、外部の助けを借りることを強くお勧めします.

于 2013-06-25T14:07:49.123 に答える