カルガリーインデックス
カルガリーのデータベースとインデックスのロードは、通常、作成されたハードウェアをフルに活用します。4つ以上のCPUが最適と見なされるインデックスを構築するには、最低2つのCPUコアが推奨されます。
標準インデックス
インデックス付けされる文字列は、8192文字以下に制限されています。100文字以下の文字が強く推奨されます。それよりも長い文字列があれば、インデックスは構築に失敗します。より短い固定長の文字列を推奨します。
インデックスではNULL値を使用できます。 定義上、1つしかありません。
非空間インデックスを作成するには、2つの異なるモードがあります:
- 高選択性インデックス。これは、値がほぼユニークである場合に使用されます。ファジーマッチキー、フルネームなどBool、Byte および Int16 は、できるだけ多くの値を持つにはならないため、高選択性インデックスをサポートしません。
- 低選択度指数: 値にレコードが含まれている場合に使用されます。州、ジェンダーコード、郵便番号...
- また、両方のタイプの構築を開始し、次に1,000,000の非nullのレコードの後に2つのうち大きい方をスローする自動モードがあります。データの性質が最初の100万レコードから大幅に変化した場合、自動で間違っていると推測できます。
フィールドタイプとインデックス:
Int32
およびInt64
フィールドには、インデックスの整数部分を圧縮する特殊なケースインデックスがあります。それらは保管では非常に効率的になります。固定小数点
は、適切な乗算で Int64 に変換され、Int インデックスとして扱われます。小数点以下の桁数が大きくない場合、6 桁を超える値はサポートされません。また、20文字を超える固定小数はサポートされていません。Bool
、Byte
、Int16
、Float
、およびDouble
は、すべて同じ基になるインデックス構造を使用します。ダブルフィールド上に構築されたインデックスは、非常に大きい可能性が非常に高くなります。代わりに浮動小数点数を使用するか、変換する方法を理解できる場合は整数を使用することを検討してください。文字列
、WString
、V_String
、V_WString
、日付
、時刻
、および日時
は、文字列としてインデックス付けされます。ワイド文字列はビルド前にUTF-8で変換されるため、時折ワイド文字のみがある場合、それらは保管では非常に効率的ですが、中国語などのワイド文字であれば、それほど効率的ではない可能性があります。blob
: blob のインデックス作成はサポートされていません。
空間インデックス
このインデックスは、他のすべてのインデックスとは内部で非常に異なります。
ポイントレベルのインデックスのみがサポートされています。他のタイプは重心を介してポイントに変換されます。
NULL と 0, 0 点が削除されます。空間インデックスのNULL値をクエリする方法はありません。
カルガリーの空間インデックスは、圧縮と速度に小数点以下5桁の精度を使用します。YXDB空間インデックスは小数点以下6桁を使用します。これによりカルガリーインデックスに最大1.8フィートの誤差の追加四捨五入を追加します。言い換えれば、ある地点がポリゴンの内側に1.8フィートのところにあり、カルガリーの外側として見つかる可能性があります。
任意のインデックスタイプと同様に、各レコードに複数の空間インデックスを関連付けることができます。これの例は、居住地アドレスと職場アドレスなので、地理的に昼間または夜間のポップをクエリすることができます。 これらはクエリと OR で組み合わせることで、商圏内に住んでいるすべての人や作業している人を取得できます。
高度なインデックス
高度なインデックスはカルガリーAdvancedIndexツールを介してロードされ、負荷は通常のデータロード/インデックス構築とは別です。高度なインデックスのロードと通常のインデックスビルドを組み合わせる場合は、高度なインデックス構築に必要なフィールドのみを選択し、他のカルガリーデータロードと同時にこれらのインデックスを構築しようとしないように、完了するまでブロックツールを使用することをお勧めします。
フルテキスト (Contains)
これは、フィールド全体とは対照的な、または最初から開始するフィールド内の任意の場所を検索する特別なインデックスです。必要に応じて、インデックスは他のインデックスタイプよりもはるかに大きく、ロードに時間がかかりますが、クエリ速度は通常の全フィールド全体のクエリとほぼ同程度の速度です。Contains スタイル インデックスを使用してクエリを実行する場合、type='範囲
' およびallowPartial='T'
は無効です。
このインデックスの性質のため、非常に長いフィールドでは、レコード数が多い場合、50文字と100Mのレコードを良好な概略の上限にすることは推奨されません。レコードが増えた場合、そのような大きなフィールドのインデックスを作成したいとは思わないでしょう。 フィールドの絶対的上限は255文字です。
これは文字列のみのインデックスです。これは、ワイド文字列として狭い文字列でも同様に機能しますが、ワイド文字列では大きく遅いインデックスになります。
未加工インデックス
これは、標準インデックスの特別なビルドモードです。このモードでは、フィールド値とレコード ID を指定できます (これは、0ベースの int32 として手作業で作成する必要があります)。これは、1つのレコードが複数の値でインデックス付けされるインデックスを作成する場合に便利です。
例えば、Person#1からPerson#6までのフィールドを持つファイルがある場合、すべてのフィールドのすべての名前を含む1つのインデックスを作成して、単一の名前で検索できるようにすることができます。このインデックスによって名前をクエリし、レコードがどのフィールドにあってもそれを見つけることができます。 また、あいまい一致キーのように、カルガリーデータベースにないフィールドにインデックスを作成する場合にも役立ちます。「 あいまい一致の一致オプション」を参照してください。 あらゆるタイプのインデックスがサポートされていますが、SpatialObjには有効な使用ケースはありません。
カルガリーローダーでの生インデックスの作成を参照してください。