質問

構築を行っていテーブルに追跡の歴史、特定のオブジェ私のデータベースです。現在、以下のようなカラムを持ちます:

HistoryId int IDENTITY(1,1) NOT NULL
HistoryDate datetimeoffset(7) NOT NULL 
HistoryTypeId int NOT NULL
HistoryDetails nvarchar(max) NULL

の履歴が自己説明のHistoryTypeIdでHistoryDetailsはNullまたは非常に小さい。でもカップルの歴史種類のデータが大きい。んでもってnvarchar(max)のためのすべての記録はいただくこともできましたのでほとい列のタイプが必要以上64文字以内(下記参照)?概算では80%-90%の記録が必要としない以上64文字の詳細な情報があります単位百万の記録です。

HistoryId int IDENTITY(1,1) NOT NULL
HistoryDate datetimeoffset(7) NOT NULL 
HistoryTypeId int NOT NULL
HistoryDetails nvarchar(64) NULL
HistoryDetailsMore nvarchar(max) NULL
役に立ちましたか?

解決

はできません NVARCHAR(MAX) キー部分に B-Tree 指数はそのままご利用いただけれどに含まれる列のインデックス).

そうしないと、保存と新しいパスワードを入力してく長としてのデータ列を超えないもののrow size zemax®ファイルをご参照ください。

でしょにならないインデックスはこの分野とにかくいホームページを作成いたします。て NVARCHAR(MAX).

でもだいたいインデックスではない接頭辞を検索 LIKEきを計算 NVARCHAR(450) カラムをインデックスこのコーナーを追加でお問合せのための粗ンです。

このエントリを自分のブログの詳細:

まも一緒に戦ってくれるかなという正確な検索のための小型のカラムのみを計算した列の、インデックスでは、クエリのようになります:

ALTER TABLE History ADD HistoryDetailsIndex AS SUBSTRING(HistoryDetails, 1, 50)

CREATE INDEX ix_mytable_typeid_details ON History (HistoryTypeId, HistoryDetailsIndex) INCLUDE (HistoryDetails)

SELECT  COUNT(*)
FROM    History
WHERE   HistoryTypeId = 123
        AND HistoryDetailsIndex LIKE 'string_prefix_up_to_50_characters%'
        AND HistoryDetails = 'string_prefix_up_to_50_characters_plus_everything_after_it'

これだけの 50 文字から HistoryDetails のインデックスキー(検索するには LIKE 条件なし)は、すべてのカラムです。

だんだこともできない検索の文字列(英字の大文字と小文字以上 50 文字を省略することができ、付属のカラムで使用す:

SELECT  COUNT(*)
FROM    History
WHERE   HistoryTypeId = 123
        AND HistoryDetailsIndex = 'string_prefix_up_to_50_characters'

この指標になります。

しかし、この失敗を提供する場合は、文字列以上 50 文字の長さになり、その場合は絶対にいまい検索のための長い文字列です。

他のヒント

以降のご利用nvarchar、既に支払い可変長レコード架りがない限りSQLServerをオーバーライドの可変長のための小さい。しかし、スペースディスクな変動の記録とnvarchar(64)nvarchar(max)を設けています。かくスペースが必要に合わせたデータです。通常はその数だけ使用するプロジェクトへの協賛を始めのデータです。されない場合、プロジェクトへの協賛を始め、その中でも、まだ支払いペナルティとをつまんでます。

最初にすることができvarchar(MAX)を保存でき2gbまでの舞台裏で実際に使用テキスト値は、その後で処理によvarchar(8000)以下とします。

だ保管は多くの小さなデータvarchar(max)としてのお取り扱いとなりますが通常のvarcharカラムしないかぎり、を超え、8000、その後、取り扱わせて頂きますようにvarchar(max)を設けています。

は列のインデックス,やりたいインデックスです。いかにvarchar(max)を設けています。

いばかりの高値とvarchar(255)、力ユーザーに合データベースのデザインとなる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top