4D v12.4

インデックスの作成と変更

ホーム

 
4D v12.4
インデックスの作成と変更

 

インデックスの作成と変更  


 

 

頻繁に検索や並び替えで使用されるフィールドに、インデックスを設定できます。例えば姓、会社名、製品名などフィールドを使用してレコードの検索や並び替えを行う場合、これらのフィールドにインデックスを設定することができます。またこのプロパティはテーブル間でのリレーションを確立するためにも使用されます。この点に関する詳細はリレーションの作成と変更を参照してください。

フィールドにインデックスが設定されると、4Dはそのフィールド用に内部的なインデックステーブルを作成します。このテーブルを使用して、4Dはそのフィールドに対する素早い検索や並び替えを実行します。インデックスが設定されていないフィールドを使用して検索や並び替えを行う場合、4Dはシーケンシャルにデータをロードし、レコード毎順番に評価します。インデックスを使用すれば、4Dはすべてのレコードを読み込むことなく検索や並び替えを行えます。

インデックスは文字、テキスト、日付、時間、整数、倍長整数、整数64bit、実数、そしてフロート型に設定できます。レコードの作成、変更、削除を行うと、4Dは自動でそのインデックステーブルを更新します。既に存在するフィールドにインデックスを作成すると、4Dは自動で既存のデータをインデックス化します。必要なだけフィールドにインデックスを設定できます。

すべてのフィールドにインデックスを設定するようなことはしないでください。インデックスはデータベースのサイズを増大させ、ディスク上のスペースを消費します。またインデックスを設定すればするほど、レコードの保存に時間を要するようになる点に留意してください。4Dはレコードを受け入れるたびにインデックステーブルを更新しなければならないためです。

ストラクチャーエディター中で、インデックスが設定されたフィールドは太字で表示されます。

4Dでは3種類のインデックスタイプを提供しています。そのいずれを選択するかは一般的に期待する結果と、フィールドに現れるデータに基づきます。各インデックスタイプの説明は以下の通りです:

  • 標準インデックス: これは1つのフィールドで構成されるインデックスで、標準のデータベース処理 (検索や並び替え) の速度を向上するために使用します。4Dではさらにこのタイプのインデックスに対し、内部的な構造が異なるBツリーまたはクラスターBツリーを選択できます。
  • 復号インデックス: このインデックスは、しばしばともに検索条件に使用される (例えばLastName+FirstName) 2つ以上のフィールドの合成値を格納します。
  • キーワードインデックス: このインデックスは文字およびテキストフィールドで使用できます。テキスト内部の検索を容易にする目的で使用されます。

標準インデックスはデータベース処理の速度を向上する目的で使用されます。4Dは2つのタイプの標準インデックス、BツリーとクラスターBツリーを提供します。

  • Bツリー: 標準のBツリータイプインデックス。この汎用目的のインデックスはほとんどのインデックスの要件を満たします。
  • クラスターBツリー: クラスターを使用したBツリータイプのインデックス。このアーキテクチャーはインデックスに含まれるキーの量が少ない場合 (例えば同じ値がデータ中に繰り返し現れる場合) に有効です。

インデックスアーキテクチャーの選択を容易にするために、自動オプションを選択できます。この場合4Dは自動でデータのタイプに応じインデックスのタイプを選択します。

注: テキストタイプのフィールドに割り当てたBツリーインデックスは、フィールドの最初の1024文字 (最大) を格納します。そのため、1024文字を超える検索を、インデックスを使用して行うと失敗します。

復号インデックスでは、レコード毎に2つ以上のフィールドの値の合成値を格納します。よく見られる例はFirstName+LastNameフィールドの復号インデックスです。この場合、“Peter Smith”の検索は (まず“Smith”を検索し次に“Peter”を検索する) 標準の検索よりも速くなります。

4Dは検索や並び替えの際に自動で復号インデックスを利用します。例えば復号インデックス“City+ZipCode”が存在するとき、“lastname=carter & city=new york & zipcode =102@”のような検索を行うと、自動でその復号インデックスが利用されます。
復号インデックスはインデックス作成ダイアログで作成します。このダイアログボックスについては後述の“インデックスの作成”を参照してください。

文字およびテキストフィールドでは特別なインデックス、キーワードインデックスを使用することができます。フィールドにこのタイプのインデックスを設定すると、フィールドに格納されたテキストは単語ごとにインデックス化されます。1文字や2文字の単語も含め、すべての単語がインデックス化されます。このタイプのインデックスはテキストフィールドのキーワードによる検索速度を劇的に向上させます。キーワード検索に関する詳細情報は4D Language Referenceマニュアルの比較演算子を参照してください。

文字やテキストフィールド (レコードにデータを格納する必要があります) には標準インデックスとキーワードインデックスの両方を設定できます。4Dはコンテキストに応じて適切なインデックスを使用します。

ストラクチャーエディターのツールバーにあるをクリックすると、インデックスリストウィンドウが表示されます。このウィンドウはタイプに関わらず、ストラクチャのすべてのインデックスを表示します:

ボタンはインデックスプロパティダイアログボックスを表示します。
ボタンは選択したインデックスを削除します(確認ダイアログが表示されます)。このボタンは特に複合インデックスを削除するために使用されます。
ツールボタンに割り当てられた2つのメニューを使用できます (インデックスが選択されている場合にのみ使用できます):

  • 編集: インデックスプロパティダイアログボックスに選択したインデックスのプロパティを表示します (次段落参照)。このダイアログはリスト中のインデックスをダブルクリックすることでも表示できます (名前エリアを除く)。
  • 再構築: 選択したインデックスを再構築するために使用されます。このコマンドを選択すると、確認ダイアログボックスが表示されます。

インデックスの作成方法はタイプにより異なります。さらにインデックスは直接あるいはダイアログを使用して作成できます。

標準のインデックスを直接作成する:

  1. フィールドを選択し、インスペクターパレットのインデックスメニューから選択します。
    または
    フィールドを右クリックし、コンテキストメニューのインデックス>サブメニューから選択します:
    • Bツリー: 標準のBツリータイプのインデックスを作成します。
    • クラスターBツリー: クラスターを使用するBツリータイプのインでクスを作成します。
    • 自動: 関連するデータに基づき、4Dがインデックスのアーキテクチャーを決定します。
    • なし: インデックスを設定しないか、既存のインデックスを取り除きます。

キーワードインデックスを直接作成する:

  1. 文字またはテキストフィールドを選択し、インスペクターパレットの"キーワードインデックス"オプションにチェックを入れる。

    または
    フィールドを右クリックし、コンテキストメニューからインデックス>キーワードを選択します。 

複合インデックスを作成、あるいは他のタイプのインデックスをインデックス作成ダイアログで作成するには:

  1. フィールドを選択し、ストラクチャーエディターツールバーのオブジェクト追加メニューを使用して、インデックスオプションを選択します。
    または
    フィールド上で右クリックし、コンテキストメニューから新規インデックス...を選択します。
    インデックス設定ダイアログが表示されます。このダイアログには以下の要素が含まれます:

    • テーブル: データベース中のすべてのテーブルのリスト。このメニューから、インデックスが属するテーブルを選択します。
    • 名前: インデックス名入力エリア。この名前は4Dランゲージコマンドで使用されます。
    • タイプ: 作成するインデックスのタイプを選択するメニュー。"自動"を選択すると、フィールドの内容に基づき、4Dが自動でインデックスタイプを決定します。
    • フィールドリスト: このエリアで、インデックスに割り当てるフィールドを指定します。ストラクチャーエディターでフィールドを選択していると、あらかじめそのフィールドがこのリストに設定されます。

インデックスにフィールドを追加するにはボタンをクリックします。選択したテーブルのフィールドリストが表示され、インデックスに追加するフィールドを指定できます。

  • 複合インデックスを作成するには、インデックスに含めるフィールドを複数選択します。フィールドリストが完成したら、矢印ボタンやドラッグ&ドロップを使用してフィールドの並びを変更できます。
  • “キーワードインデックス”タイプは文字やテキストフィールドタイプでのみ使用できます。またこの場合、1つのフィールドのみをインデックスに含めることができます。

インデックスからフィールドを削除するには、リスト中でそれを選択し、ボタンをクリックします。
インデックスの設定ができたら、OKボタンをクリックするとインデックスが生成されます。

利用しなくなったインデックスはいつでも削除できます。削除はストラクチャーエディター上で直接、またはインデックスリストウィンドウ上で行うことができます。インデックスリストウィンドウに関する詳細は、前述の"インデックスリスト"を参照してください。

標準インデックスを削除するには:

  1. 削除するインデックスが割り当てられているフィールドを選択し、インスペクターパレットのインデックスメニューからなしを選択します。
    または
  2. 削除するインデックスが割り当てられているフィールド上で右クリックし、コンテキストメニューからインデックス>なしを選択します。

キーワードインデックスを削除するには:

  1. 削除するインデックスが割り当てられているフィールドを選択し、インスペクターパレットの"キーワードインデックス"オプションのチェックを外します。
    または
  2. 削除するインデックスが割り当てられているフィールド上で右クリックし、コンテキストメニュー中のインデックス>キーワードを選択してチェック状態を解除します。

複合インデックスの削除はインデックスリストウィンドウのボタンを使用してのみ削除できます。

フィールドのインデックスをいつでも再構築できます。これは言い換えると、そのインデックスに対応するインデックステーブルを、現在のデータを使用して再構築することを意味します。これはアプリケーションメンテナンスの際に利用できます。

インデックスの再構築はインデックスリストウィンドウの再構築コマンドを使用して行います。

データ言語の変更 (テキスト比較参照) や、データ圧縮 (圧縮ページ参照)  などのメンテナンス処理においても、インデックスの再構築が行われることに留意してください。

 
プロパティ 

プロダクト: 4D
テーマ: データベースストラクチャーの作成