(57)【特許請求の範囲】
【請求項１】
複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表と、
前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表と、
前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引と、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引とを保持する記憶装置と、
前記複数の被結合表、前記結合表、前記複数の被結合表索引、および、前記結合表索引を作成し、前記記憶装置に格納し、異なる複数の前記被結合表内の前記データの組み合わせを示す前記結合表内の前記結合表レコード番号の検索に際し、前記複数の被結合表索引から対応する前記被結合表レコード番号を検索し、前記記憶装置に格納し、前記記憶装置に格納された前記被結合表レコード番号に基づいて、前記結合表索引から対応する前記結合表レコード番号を検索し、前記記憶装置に格納するデータベース管理部とを有することを特徴とする検索処理装置。
【請求項２】
前記被結合表内の前記データを入力パラメータとし、前記被結合表索引の最上位のブロックを検索の対象とし、前記入力パラメータと前記被結合表索引の前記最上位のブロック内の各索引レコードの内容とを文字コードで比較し、前記入力パラメータを越えない最大の文字コードのデータを持つ索引レコードを求め、前記被結合表索引の前記最上位のブロックが前記被結合表索引の最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指し示す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記被結合表索引の最下位であると、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、すべての条件について、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、次に、前記中間結果領域内の前記被結合表レコード番号を前記結合表索引の入力パラメータとし、前記結合表索引の最上位のブロックに対応する前記被結合表レコード番号を比較値とし、前記結合表索引の最上位のブロック内の索引レコードの内容と前記比較値とを文字コードで昇順に比較し、前記比較値を越えない最大の値を持つ索引レコードを求め、前記結合表索引の最上位のブロックが最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記結合表索引の最下位であると、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納し、前記中間結果領域内の全ての前記被結合表レコード番号に対して、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納する前記データベース管理部を有することを特徴とする請求項１記載の検索処理装置。
【請求項３】
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）異なる複数の前記被結合表内の前記データの組み合わせを示す前記結合表内の前記結合表レコード番号の検索に際し、前記複数の被結合表索引から対応する前記被結合表レコード番号を検索し、前記記憶装置に格納し、前記記憶装置に格納された前記被結合表レコード番号に基づいて、前記結合表索引から対応する前記結合表レコード番号を検索し、前記記憶装置に格納する第５のステップと、
を含むことを特徴とする検索処理方法。
【請求項４】
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）前記被結合表内の前記データを入力パラメータとし、前記被結合表索引の最上位のブロックを検索の対象とし、前記入力パラメータと前記被結合表索引の前記最上位のブロック内の各索引レコードの内容とを文字コードで比較し、前記入力パラメータを越えない最大の文字コードのデータを持つ索引レコードを求める第５のステップと、
（ｅ）前記被結合表索引の前記最上位のブロックが前記被結合表索引の最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指し示す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記被結合表索引の最下位であると、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、すべての条件について、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納する第６のステップと、
（ｆ）前記中間結果領域内の前記被結合表レコード番号を前記結合表索引の入力パラメータとし、前記結合表索引の最上位のブロックに対応する前記被結合表レコード番号を比較値とする第７のステップと、
（ｇ）前記結合表索引の最上位のブロック内の索引レコードの内容と前記比較値とを文字コードで昇順に比較し、前記比較値を越えない最大の値を持つ索引レコードを求める第８のステップと、
（ｈ）前記結合表索引の最上位のブロックが最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記結合表索引の最下位であると、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納し、前記中間結果領域内の全ての前記被結合表レコード番号に対して、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納する第９のステップと、
を含むことを特徴とする検索処理方法。
【請求項５】
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）異なる複数の前記被結合表内の前記データの組み合わせを示す前記結合表内の前記結合表レコード番号の検索に際し、前記複数の被結合表索引から対応する前記被結合表レコード番号を検索し、前記記憶装置に格納し、前記記憶装置に格納された前記被結合表レコード番号に基づいて、前記結合表索引から対応する前記結合表レコード番号を検索し、前記記憶装置に格納する第５のステップと、
をコンピュータに実行させるプログラムを記録したことを特徴とする記録媒体。
【請求項６】
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）前記被結合表内の前記データを入力パラメータとし、前記被結合表索引の最上位のブロックを検索の対象とし、前記入力パラメータと前記被結合表索引の前記最上位のブロック内の各索引レコードの内容とを文字コードで比較し、前記入力パラメータを越えない最大の文字コードのデータを持つ索引レコードを求める第５のステップと、
（ｅ）前記被結合表索引の前記最上位のブロックが前記被結合表索引の最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指し示す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記被結合表索引の最下位であると、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、すべての条件について、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納する第６のステップと、
（ｆ）前記中間結果領域内の前記被結合表レコード番号を前記結合表索引の入力パラメータとし、前記結合表索引の最上位のブロックに対応する前記被結合表レコード番号を比較値とする第７のステップと、
（ｇ）前記結合表索引の最上位のブロック内の索引レコードの内容と前記比較値とを文字コードで昇順に比較し、前記比較値を越えない最大の値を持つ索引レコードを求める第８のステップと、
（ｈ）前記結合表索引の最上位のブロックが最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記結合表索引の最下位であると、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納し、前記中間結果領域内の全ての前記被結合表レコード番号に対して、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納する第９のステップと、
をコンピュータに実行させるプログラムを記録したことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、検索処理装置、検索処理方法、および記録媒体に関し、特に、結合表の索引にレコード番号を使用する検索処理装置、検索処理方法、および記録媒体に関する。
【０００２】
【従来の技術】
従来のデータベースにおける結合表の索引は、索引レコードに、キー値を含むものであった。
【０００３】
また、レコード番号を利用したものとしては、たとえば、「特開平３−２２３９６５号公報」記載の技術がある。この技術は、表１に含まれる全てのレコードのレコード番号からなるレコード番号集合１と、表２に含まれる全てのレコードのレコード番号集合２と、カラム１の値とカラム２の値の値が等しい組み合わせの表１と表２のレコード番号の組を作成し、これらをもとにカラム１の値とカラム２の値が等しくない組み合わせのレコード番号の組を作成する。そして、カラム１とカラム２との値が等しい組み合わせのレコード番号の組を出力する処理では、カラム１またはカラム２に対して構築された索引を利用している。
【０００４】
【発明が解決しようとする課題】
上述した従来の技術の第１の問題点は、索引レコードにキー値を含む結合表の索引を利用するので、索引に時間がかかることである。
【０００５】
また、第２の問題点は、上述した「特開平３−２２３９６５号公報」記載の技術においては、カラム１とカラム２との値の等しい、等しく無い組を検出するのみであり、汎用性に乏しいことである。
【０００６】
本発明の目的は、レコード番号の組み合わせを持つ索引を用いることにより、高速に検索処理を実行できるようにすることである。
【０００７】
【課題を解決するための手段】
本発明の第１の検索処理装置は、複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表と、
前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表と、
前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引と、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引とを保持する記憶装置と、
前記複数の被結合表、前記結合表、前記複数の被結合表索引、および、前記結合表索引を作成し、前記記憶装置に格納し、異なる複数の前記被結合表内の前記データの組み合わせを示す前記結合表内の前記結合表レコード番号の検索に際し、前記複数の被結合表索引から対応する前記被結合表レコード番号を検索し、前記記憶装置に格納し、前記記憶装置に格納された前記被結合表レコード番号に基づいて、前記結合表索引から対応する前記結合表レコード番号を検索し、前記記憶装置に格納するデータベース管理部とを有する。
【０００８】
本発明の第２の検索処理装置は、前記第１の検索処理装置であって、前記被結合表内の前記データを入力パラメータとし、前記被結合表索引の最上位のブロックを検索の対象とし、前記入力パラメータと前記被結合表索引の前記最上位のブロック内の各索引レコードの内容とを文字コードで比較し、前記入力パラメータを越えない最大の文字コードのデータを持つ索引レコードを求め、前記被結合表索引の前記最上位のブロックが前記被結合表索引の最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指し示す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記被結合表索引の最下位であると、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、すべての条件について、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、次に、前記中間結果領域内の前記被結合表レコード番号を前記結合表索引の入力パラメータとし、前記結合表索引の最上位のブロックに対応する前記被結合表レコード番号を比較値とし、前記結合表索引の最上位のブロック内の索引レコードの内容と前記比較値とを文字コードで昇順に比較し、前記比較値を越えない最大の値を持つ索引レコードを求め、前記結合表索引の最上位のブロックが最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記結合表索引の最下位であると、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納し、前記中間結果領域内の全ての前記被結合表レコード番号に対して、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納する前記データベース管理部を有する。
【０００９】
本発明の第１の検索処理方法は、
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）異なる複数の前記被結合表内の前記データの組み合わせを示す前記結合表内の前記結合表レコード番号の検索に際し、前記複数の被結合表索引から対応する前記被結合表レコード番号を検索し、前記記憶装置に格納し、前記記憶装置に格納された前記被結合表レコード番号に基づいて、前記結合表索引から対応する前記結合表レコード番号を検索し、前記記憶装置に格納する第５のステップと、
を含む。
【００１０】
本発明の第２の検索処理方法は、
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）前記被結合表内の前記データを入力パラメータとし、前記被結合表索引の最上位のブロックを検索の対象とし、前記入力パラメータと前記被結合表索引の前記最上位のブロック内の各索引レコードの内容とを文字コードで比較し、前記入力パラメータを越えない最大の文字コードのデータを持つ索引レコードを求める第５のステップと、
（ｅ）前記被結合表索引の前記最上位のブロックが前記被結合表索引の最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指し示す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記被結合表索引の最下位であると、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、すべての条件について、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納する第６のステップと、
（ｆ）前記中間結果領域内の前記被結合表レコード番号を前記結合表索引の入力パラメータとし、前記結合表索引の最上位のブロックに対応する前記被結合表レコード番号を比較値とする第７のステップと、
（ｇ）前記結合表索引の最上位のブロック内の索引レコードの内容と前記比較値とを文字コードで昇順に比較し、前記比較値を越えない最大の値を持つ索引レコードを求める第８のステップと、
（ｈ）前記結合表索引の最上位のブロックが最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記結合表索引の最下位であると、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納し、前記中間結果領域内の全ての前記被結合表レコード番号に対して、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納する第９のステップと、
を含む。
【００１１】
本発明の第１の記録媒体は、
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）異なる複数の前記被結合表内の前記データの組み合わせを示す前記結合表内の前記結合表レコード番号の検索に際し、前記複数の被結合表索引から対応する前記被結合表レコード番号を検索し、前記記憶装置に格納し、前記記憶装置に格納された前記被結合表レコード番号に基づいて、前記結合表索引から対応する前記結合表レコード番号を検索し、前記記憶装置に格納する第５のステップと、
をコンピュータに実行させるプログラムを記録する。
【００１２】
本発明の第２の記録媒体は、
（ａ）複数のキー値を持つキー値カラム、前記複数のキー値に対応する複数のデータを持つデータカラム、および、前記キー値とその前記キー値に対応するデータの組に対応する複数のレコード番号を持つ被結合表レコード番号カラムを含む複数の被結合表を作成し記憶装置に格納する第１のステップと、
（ｂ）前記複数の被結合表の前記複数の被結合表レコード番号の持つ被結合用レコード番号カラム、被結合用レコード番号カラムの各前記被結合表レコード番号の組に対応する結合表レコード番号を含む結合表を作成し前記記憶装置に格納する第２のステップと、
（ｃ）前記被結合表に含まれる各前記データと各前記被結合表レコード番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記複数の被結合表対応の複数の被結合表索引を作成し前記記憶装置に格納する第３のステップと、
前記各前記被結合表レコード番号と前記結合表番号との対応を含む索引レコードからなる入出力単位のブロックのバイナリツリーである前記結合表対応の結合表索引を作成し、前記記憶装置に格納する第４のステップと、
（ｄ）前記被結合表内の前記データを入力パラメータとし、前記被結合表索引の最上位のブロックを検索の対象とし、前記入力パラメータと前記被結合表索引の前記最上位のブロック内の各索引レコードの内容とを文字コードで比較し、前記入力パラメータを越えない最大の文字コードのデータを持つ索引レコードを求める第５のステップと、
（ｅ）前記被結合表索引の前記最上位のブロックが前記被結合表索引の最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指し示す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記被結合表索引の最下位であると、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納し、すべての条件について、前記被結合表索引の前記最下位のブロックの索引レコード内の被結合表レコード番号を前記記憶装置内の中間結果領域に格納する第６のステップと、
（ｆ）前記中間結果領域内の前記被結合表レコード番号を前記結合表索引の入力パラメータとし、前記結合表索引の最上位のブロックに対応する前記被結合表レコード番号を比較値とする第７のステップと、
（ｇ）前記結合表索引の最上位のブロック内の索引レコードの内容と前記比較値とを文字コードで昇順に比較し、前記比較値を越えない最大の値を持つ索引レコードを求める第８のステップと、
（ｈ）前記結合表索引の最上位のブロックが最下位のブロックかどうか調べ、最下位のブロックではないと、求められた前記索引レコードが指す下位のブロックを次の検索対象とし、順次検索し、前記下位のブロックが前記結合表索引の最下位であると、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納し、前記中間結果領域内の全ての前記被結合表レコード番号に対して、前記結合表索引の最下位のブロックの索引レコード内の前記結合表レコード番号を前記記憶装置内の検索結果領域に格納する第９のステップと、
をコンピュータに実行させるプログラムを記録する。
【００１３】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図２は、本発明の第１の実施の形態を示すブロック図である。
本発明の第１の実施の形態は、データベース管理装置８０と、データベース管理装置８０に接続される記憶装置９０とから構成される。被結合表１０Ｔ、被結合表２０Ｔ、結合表３０Ｔ、索引４０Ｘ、索引１１Ｘ、索引２１Ｘが、データベース管理装置８０により生成され、記憶装置９０に格納される。
【００１４】
次に、結合表３０Ｔについて説明する。
図３は、結合表３０Ｔの概念を示す説明図である。
図３を参照すると、データベースにおける被結合表１０Ｔ、被結合表２０Ｔが、結合表３０Ｔによって参照される。
【００１５】
被結合表１０Ｔは、レコード番号（Ｒ１１〜Ｒ１５）からなるレコード番号カラム１００Ｃ、キー値（ｋｅｙ−１１〜ｋｅｙ−１５）からなるキー値カラム１０１Ｃ、および、各キー値に対応したデータ（ｖａｌ−１Ａ〜ｖａｌ−１Ｅ）からなるデータカラム１０２Ｃとから構成される。
【００１６】
ここで、レコード番号は、各キー値と対応するデータとの組を示すレコードを一意に示す番号である。
【００１７】
同様に、被結合表２０Ｔは、レコード番号（Ｒ２１〜Ｒ２５）からなるレコード番号カラム２００Ｃ、キー値（ｋｅｙ−２１〜ｋｅｙ−２５）からなるキー値カラム２０１Ｃ、および、各キー値に対応したデータ（ｖａｌ−２Ａ〜ｖａｌ−２Ｅ）からなるデータカラム２０２Ｃとから構成される。
【００１８】
たとえば、具体的には、キー値は、データベースにおける商品コードであり、データは、対応する商品名である。
【００１９】
結合表３０Ｔは、レコード番号（Ｒ０１〜Ｒ０９）からなるレコード番号カラム３００Ｃ、被結合表１０Ｔのレコード番号カラム１００Ｃからのレコード番号（Ｒ１１〜Ｒ１５）からなるレコード番号カラム３０１Ｃ、および、レコード番号カラム３０１Ｃの各レコード番号に対応するデータと組み合わされる被結合表２０Ｔのデータに対応するレコード番号カラム２００Ｃのレコード番号（Ｒ２１〜Ｒ２５）からなるレコード番号カラム３０２Ｃから構成される。
【００２０】
結合表３０Ｔ内の各組み合わせは、レコード番号Ｒ０１では、Ｒ１２−Ｒ２３、レコード番号Ｒ０２では、Ｒ１３−Ｒ２４、レコード番号Ｒ０３では、１２−Ｒ２５、レコード番号Ｒ０４では、Ｒ１４−Ｒ２５、レコード番号Ｒ０５では、Ｒ１１−Ｒ２１、レコード番号Ｒ０６では、Ｒ１２−Ｒ２２、レコード番号Ｒ０７では、Ｒ１１−Ｒ２３、レコード番号Ｒ０８では、Ｒ１５−Ｒ２５、レコード番号Ｒ０９では、Ｒ１３−Ｒ２１である。
【００２１】
次に、索引１１Ｘ〜索引４０Ｘに関して説明する。
図４、図６は、索引の概念を示す説明図である。
図５は、索引の各ブロックの内容を示す説明図である。
図４を参照すると、結合表３０Ｔの索引４０Ｘは、入出力単位（記憶装置９０に書き込まれる、あるいは、記憶装置９０から読み出される単位。たとえば、本例では、３レコード）のブロック４１１Ｂ、ブロック４２１Ｂ〜ブロック４２２Ｂ、および、ブロック４３１Ｂ〜ブロック４３５Ｂによるバイナリツリーの構成をなしている。
【００２２】
最下位のブロック４３１Ｂ〜ブロック４３５Ｂは、それぞれ、結合表３０Ｔのレコード番号カラム３０２Ｃ内のレコード番号（Ｒ２１〜Ｒ２５）と、レコード番号カラム３００Ｃの対応するレコード番号（Ｒ０１〜Ｒ０９）との対である索引レコードを含む（図５参照）。各ブロック４３１Ｂ〜ブロック４３５Ｂには、結合表３０Ｔ内の組み合わせの内、レコード番号カラム３０１Ｃの同一のレコード番号に組み合わされるレコード番号（Ｒ２１〜Ｒ２５）のみが含まれる。また、１つのブロック内では、レコード番号が文字コードにおける昇順になるように索引レコードが配置される。
【００２３】
たとえば、ブロック４３１Ｂは、Ｒ１１と組み合わされるように、まず、＜Ｒ２１，Ｒ０５＞の対である索引レコード４３１１Ｒ、次に、＜Ｒ２３，Ｒ０７＞の対である索引レコード４３１２Ｒを含む。ブロック４３２Ｂは、Ｒ１２と組み合わされるように、まず、＜Ｒ２２，Ｒ０６＞の対である索引レコード４３２１Ｒ、次に、＜Ｒ２３，Ｒ０１＞の対である索引レコード４３２２Ｒ、次に、＜Ｒ２４，Ｒ０３＞の対である索引レコード４３２３Ｒを含む。ブロック４３３Ｂは、Ｒ１３と組み合わされるように、まず、＜Ｒ２１，Ｒ０９＞の対である索引レコード４３３１Ｒ、次に、＜Ｒ２４，Ｒ０２＞の対である索引レコード４３３２Ｒを含む。ブロック４３４Ｂは、Ｒ１４と組み合わされるように、＜Ｒ２５，Ｒ０４＞の対である索引レコード４３４１Ｒを含む。ブロック４３５Ｂは、Ｒ１５と組み合わされるように、＜Ｒ２５，Ｒ０８＞の対である索引レコード４３５１Ｒを含む。
【００２４】
中間のブロック４２１Ｂ〜ブロック４２２Ｂには、それぞれ、「最下位の各ブロック４３１Ｂ〜ブロック４３５Ｂを指し示すポインタ」と、「そのポインタで指し示される最下位の各ブロック４３１Ｂ〜ブロック４３５Ｂ内のレコード番号（Ｒ２１〜Ｒ２５）と組み合わされる結合表３０Ｔのレコード番号カラム３０１Ｃ内のレコード番号（Ｒ１１〜Ｒ１５）」との対である索引レコードが含まれる（図５参照）。また、１つのブロック内では、レコード番号が文字コードにおける昇順になるように索引レコードが配置される。
【００２５】
たとえば、ブロック４２１Ｂは、まず、ブロック４３１Ｂ内の各レコード番号（Ｒ２１，Ｒ２３）と組み合わされるように、＜Ｒ１１，ブロック４３１Ｂを指し示すポインタ＞の対である索引レコード４２１１Ｒを、次に、ブロック４３２Ｂ内の各レコード番号（Ｒ２２，Ｒ２３，Ｒ２４）と組み合わされるように、＜Ｒ１２，ブロック４３２Ｂを指し示すポインタ＞の対である索引レコード４２１２Ｒを、次に、ブロック４３３Ｂ内の各レコード番号（Ｒ２１，Ｒ２４）と組み合わされるように、＜Ｒ１３，ブロック４３３Ｂを指し示すポインタ＞の対である索引レコード４２１３Ｒを含む。
【００２６】
ブロック４２２Ｂは、まず、ブロック４３４Ｂ内のレコード番号（Ｒ２５）と組み合わされるように、＜Ｒ１４，ブロック４３４Ｂを指し示すポインタ＞の対である索引レコード４２２１Ｒを、次に、ブロック４３５Ｂ内のレコード番号（Ｒ２５）と組み合わされるように、＜Ｒ１５，ブロック４３５Ｂを指し示すポインタ＞の対である索引レコード４２２２Ｒを含む。
【００２７】
最上位のブロック４１１Ｂには、「中間の各ブロック４２１Ｂ〜ブロック４２２Ｂを指し示すポインタ」と、「そのポインタで指し示される中間の各ブロック４２１Ｂ〜ブロック４２２Ｂ内の先頭に位置するレコード番号」との対である索引レコードが含まれる（図５参照）。また、１つのブロック内では、レコード番号が文字コードにおける昇順になるように索引レコードが配置される。
【００２８】
たとえば、ブロック４１１Ｂは、まず、ブロック４３１Ｂ内のレコード番号（Ｒ２３）と組み合わされるように、＜Ｒ１１，ブロック４２１Ｂを指し示すポインタ＞の対である索引レコード４１１１Ｒを、次に、ブロック４３５Ｂ内のレコード番号（Ｒ２５）と組み合わされるように、＜Ｒ１４，ブロック４２２Ｂを指し示すポインタ＞の対である索引レコード４１１２Ｒを含む（図４）。
【００２９】
また、図６を参照すると、被結合表１０Ｔの索引１１Ｘは、入出力単位のブロック１１１Ｂ、ブロック１２１Ｂ〜ブロック１２２Ｂによるバイナリツリーの構成をなしている。
【００３０】
最下位のブロック１２１Ｂ〜ブロック１２２Ｂは、それぞれ、被結合表１０Ｔのデータカラム１０２Ｃ内のデータ（Ｖａｌ−１Ａ〜Ｖａｌ−１Ｅ）と、レコード番号カラム１００Ｃの対応するレコード番号（Ｒ１１〜Ｒ１５）との対である索引レコードを含む（図５参照）。１つのブロック内では、データが文字コードにおける昇順になるように索引レコードが配置される。
【００３１】
たとえば、ブロック１２１Ｂは、まず、＜Ｖａｌ−１Ａ，Ｒ１１＞の対である索引レコード１２１１Ｒ、次に、＜Ｖａｌ−１Ｂ，Ｒ１２＞の対である索引レコード１２１２Ｒ、次に、＜Ｖａｌ−１Ｃ，Ｒ１３＞の対である索引レコード１２１３Ｒを含む。ブロック１２２Ｂは、まず、＜Ｖａｌ−１Ｄ，Ｒ１４＞の対である索引レコード１２２１Ｒ、次に、＜Ｖａｌ−１Ｅ，Ｒ１５＞の対である索引レコード１２２２Ｒを含む。
【００３２】
最上位のブロック１１１Ｂには、それぞれ、「最下位の各ブロック１２１Ｂ〜ブロック１２２Ｂを指し示すポインタ」と、「そのポインタで指し示される最下位の各ブロック１２１Ｂ〜ブロック１２２Ｂ内の先頭に位置するデータ」との対である索引レコードが含まれる（図５参照）。また、１つのブロック内では、データが文字コードにおける昇順になるように索引レコードが配置される。
【００３３】
たとえば、ブロック１１１Ｂは、まず、＜Ｖａｌ−１Ａ，ブロック１２１Ｂを指し示すポインタ＞の対である索引レコード１１１１Ｒを、次に、＜Ｖａｌ−１Ｄ，ブロック１２２Ｂを指し示すポインタ＞の対である索引レコード１１１２Ｒを含む。
【００３４】
同様にして、被結合表２０Ｔの索引２１Ｘの最下位ブロック２２１Ｂは、まず、＜Ｖａｌ−２Ａ，Ｒ２１＞の対である索引レコード２２１１Ｒ、次に、＜Ｖａｌ−２Ｂ，Ｒ２２＞の対である索引レコード２２１２Ｒ、次に、＜Ｖａｌ−２Ｃ，Ｒ２３＞の対である索引レコード２２１３Ｒを含む（図５参照）。ブロック２２２Ｂは、まず、＜Ｖａｌ−２Ｄ，Ｒ２４＞の対である索引レコード２２２１Ｒ、次に、＜Ｖａｌ−２Ｅ，Ｒ２５＞の対である索引レコード２２２２Ｒを含む。
【００３５】
また、最上位のブロック２１１Ｂは、まず、＜Ｖａｌ−２Ａ，ブロック２２１Ｂを指し示すポインタ＞の対である索引レコード２１１１Ｒを、次に、＜Ｖａｌ−２Ｄ，ブロック２２２Ｂを指し示すポインタ＞の対である索引レコード２１１２Ｒを含む。
【００３６】
次に、本発明の実施の形態の動作について図面を参照して説明する。
図１は、本発明の第１の実施の形態の動作を示すフローチャートである。
【００３７】
被結合表１０Ｔ、被結合表２０Ｔ、結合表３０Ｔを使用して、「ＶＡＬ−１ＡもしくはＶＡＬ−１Ｅを持ち、かつ、ＶＡＬ−２ＣもしくはＶＡＬ−２Ｅを持つ結合表３０Ｔのレコード番号を求める」場合について説明する。
【００３８】
まず、条件「Ｖａｌ−１ＡもしくはＶＡＬ−１Ｅを持つ」被結合表１０Ｔのレコード番号を索引１１Ｘを用いて求める。
【００３９】
抽出条件「Ｖａｌ−１Ａ」を入力パラメータとし（図１ステップＳ２）、索引１１Ｘの最上位のブロック１１１Ｂを検索の対象とする（図１ステップＳ３）。次に、抽出条件「Ｖａｌ−１Ａ」とブロック１１１Ｂ内の索引レコードの内容とを文字コードで昇順に比較し、入力パラメータ「Ｖａｌ−１Ａ」を越えない最大の文字コードのデータを持つ索引レコード１１１１Ｒを求める（図１ステップＳ４）。
【００４０】
ここで、比較は、すべて、文字コードで実施される。たとえば、１６進ＪＩＳ文字コードでは、Ｖａｌ−１Ａは、“５６６１６Ｃ２Ｄ３１４１”、Ｖａｌ−１Ｂは、“５６６１６Ｃ２Ｄ３１４２”、Ｖａｌ−１Ｃは、“５６６１６Ｃ２Ｄ３１４３”、Ｖａｌ−１Ｄは、“５６６１６Ｃ２Ｄ３１４４”である。入力パラメータ「Ｖａｌ−１Ａ」を越えないとは、“５６６１６Ｃ２Ｄ３１４１”を越えないことである。
【００４１】
次に、このブロック１１１Ｂが最下位のブロックかどうか調べ（図１ステップＳ５）、この場合、ブロック１１１Ｂは最下位のブロックではないので（図１ステップＳ５／Ｎｏ）、索引レコード１１１１Ｒが指し示す下位のブロック１２１Ｂを次の検索対象とする（図１ステップＳ６）。
【００４２】
ブロック１２１Ｂ内のデータを昇順に比較し、入力パラメータを越えない最大の値「Ｖａｌ−１Ａ」を持つ索引レコード１２１１Ｒを求める（図１ステップＳ４）。ブロック１２１Ｂは最下位のブロックなので（図１Ｓステップ５／Ｙｅｓ）、索引レコード１２１１Ｒ内のレコード番号Ｒ１１を求め、記憶装置９０内の中間結果領域９０１Ｔに格納する（図１ステップＳ７）。
【００４３】
次に、全ての条件について検索したかどうか調べ（図１ステップＳ８）、まだ、未検索の条件があれば（図１ステップＳ８／Ｎｏ）、次の条件の検索を実施する。この場合、次の抽出条件「ＶＡＬ−１Ｅ」についても同様の処理を繰り返し（図１ステップＳ２〜ステップＳ６）、レコード番号Ｒ１５を求め、記憶装置９０内の中間結果領域９０１Ｔに格納する（図１ステップＳ７）。
【００４４】
この時点で、記憶装置９０内の中間結果領域９０１Ｔには、「Ｒ１１，Ｒ１５」が格納されている。
【００４５】
次に、さらに、全ての条件について検索したかどうか調べ（図１ステップＳ８）、まだ、未検索の条件があれば（図１ステップＳ８／Ｎｏ）、次の条件の検索を実施する。この場合、被結合表２０Ｔに対する条件「ＶＡＬ−２Ｃ、もしくは、ＶＡＬ−２Ｅ」に関しても、索引２１Ｘを用いて同様の処理を繰り返し（図１ステップＳ２〜ステップＳ７）、記憶装置９０内の中間結果領域９０２Ｔに、「Ｒ２３，Ｒ２５」を格納する。
【００４６】
次に、全ての条件について検索が終わると（図１ステップＳ８／Ｙｅｓ）、索引４０Ｘを用いて検索処理を行う。
【００４７】
入力パラメータを、中間結果領域９０１Ｔ内の「Ｒ１１，Ｒ１５」、および、中間結果領域９０２Ｔ内の「Ｒ２３，Ｒ２５」とする（図１ステップＳ９）。
【００４８】
まず、最初の組み合わせ「Ｒ１１」と「Ｒ２３，Ｒ２５」との処理を行う。
【００４９】
最上位のブロック４１１Ｂはレコード番号カラム３０１Ｃに対応づけられているので、比較値として「Ｒ１１」を用いる（図１ステップＳ１０）。
【００５０】
次に、最上位のブロック４１１Ｂ内の索引レコードの内容とＲ１１とを昇順に比較し、Ｒ１１を越えない最大の値を持つ索引レコード４１１１Ｒを求める（図１ステップＳ１１）。ブロック４１１Ｂは最下位のブロックではないので（図１ステップＳ１２／Ｎｏ）、索引レコード４１１１Ｒが指す下位のブロック４２１Ｂを次の検索対象とする（図１ステップＳ１３）。
【００５１】
最上位から１つ下の階層のブロック４２１Ｂはレコード番号カラム３０１Ｃに対応づけられているので比較値として「Ｒ１１」を用いる（図１ステップＳ１０）。
【００５２】
次に、ブロック４２１Ｂの索引レコードの内容とＲ１１とを昇順に比較し、Ｒ１１を越えない最大の値を持つ索引レコード４２１１Ｒを求める（図１ステップＳ１１）。ブロック４２１Ｂは最下位のブロックではないので（図１ステップＳ１２／Ｎｏ）、索引レコード４２１１Ｒが指す下位のブロック４３１Ｂを次の検索対象とする（図１ステップＳ１３）。
【００５３】
最下位のブロック４３１Ｂは、レコード番号カラム３０２Ｃに対応づけられているので比較値として「Ｒ２３，Ｒ２５」を用いる（図１ステップＳ１０）。
【００５４】
ブロック４３１Ｂ内の索引レコードの内容と「Ｒ２３」とを昇順に比較し、「Ｒ２３」と一致する内容を含む最下位のブロック４３１Ｂ内の索引レコード４３１２Ｒを求める（図１ステップＳ１１）。同じく、ブロック４３１Ｂ内の索引レコードの内容と「Ｒ２５」とを昇順に比較し、存在しないので「Ｒ２５」に関しては何も行わない（図１ステップＳ１１）。
【００５５】
ブロック４３１Ｂは最下位のブロックなので（図１ステップＳ１２／Ｙｅｓ）、索引レコード４３１２Ｒが含むレコード番号Ｒ０７を記憶装置９０内の検索結果領域９１０Ｔに格納する（図１ステップＳ１４）。条件の組み合わせは、まだ存在するので（図１ステップＳ１５／Ｙｅｓ）、次に、組み合わせ「Ｒ１５」と「Ｒ２３，Ｒ２５」の処理を行う。
【００５６】
最上位のブロック４１１Ｂはレコード番号カラム３０１Ｃに対応づけられているので、比較値として「Ｒ１５」を用いる（図１ステップＳ１０）。
【００５７】
次に、最上位のブロック４１１Ｂ内の索引レコードの内容とＲ１５とを昇順に比較し、Ｒ１５を越えない最大の値（この場合Ｒ１４）を持つ索引レコード４１１２Ｒを求める（図１ステップＳ１１）。ブロック４１１Ｂは最下位のブロックではないので（図１ステップＳ１２／Ｎｏ）、索引レコード４１１２Ｒが指す下位のブロック４２２Ｂを次の検索対象とする（図１ステップＳ１３）。
【００５８】
最上位から１つ下の階層のブロック４２２Ｂはレコード番号カラム３０１Ｃに対応づけられているので比較値として「Ｒ１５」を用いる（図１ステップＳ１０）。
【００５９】
次に、ブロック４２２Ｂの索引レコードの内容とＲ１５とを昇順に比較し、Ｒ１５を越えない最大の値（この場合Ｒ１５）を持つ索引レコード４２２２Ｒを求める（図１ステップＳ１１）。ブロック４２２Ｂは最下位のブロックではないので（図１ステップＳ１２／Ｎｏ）、索引レコード４２２２Ｒが指す下位のブロック４３５Ｂを次の検索対象とする（図１ステップＳ１３）。
【００６０】
最下位のブロック４３５Ｂは、レコード番号カラム３０２Ｃに対応づけられているので比較値として「Ｒ２３，Ｒ２５」を用いる（図１ステップＳ１０）。
【００６１】
ブロック４３５Ｂ内の索引レコードの内容と「Ｒ２３」とを昇順に比較し、「Ｒ２３」と一致する内容を含む最下位のブロック４３５Ｂ内の索引レコードが存在しないので、「Ｒ２３」に関しては何も行わない（図１ステップＳ１１）。
【００６２】
同じく、ブロック４３５Ｂ内の索引レコードの内容と「Ｒ２５」とを昇順に比較し、一致する索引レコード４３５１Ｒを求める（図１ステップＳ１１）。
【００６３】
ブロック４３５Ｂは最下位のブロックなので（図１ステップＳ１２／Ｙｅｓ）、索引レコード４３５１Ｒが含むレコード番号Ｒ０８を記憶装置９０内の検索結果領域９１０Ｔに格納する（図１ステップＳ１４）。
【００６４】
条件の組み合わせは、もう存在しないので（図１ステップＳ１５／Ｎｏ）、記憶装置９０内の検索結果領域９１０Ｔの「Ｒ０７，Ｒ０８」を最終結果とする。
【００６５】
以上のようにして、あらかじめ結合するすべての表のレコード番号の組み合わせを持つ索引を用いることにより、効率的に検索が可能となる。
【００６６】
次に、本発明の第２の実施の形態について説明する。
本発明の第２の実施の形態は、抽出条件「Ｖａｌ−１Ａ」を入力パラメータとする第１のステップ（図１ステップＳ２）と、索引１１Ｘの最上位のブロック１１１Ｂを検索の対象とする第２のステップ（図１ステップＳ３）と、次に、抽出条件「Ｖａｌ−１Ａ」とブロック１１１Ｂ内の索引レコードの内容とを文字コードで昇順に比較し、入力パラメータ「Ｖａｌ−１Ａ」を越えない最大の文字コードのデータを持つ索引レコード１１１１Ｒを求める第３のステップ（図１ステップＳ４）と、このブロック１１１Ｂが最下位のブロックかどうか調べる第４のステップ（図１ステップＳ５）と、この場合、ブロック１１１Ｂは最下位のブロックではないので（図１ステップＳ５／Ｎｏ）、索引レコード１１１１Ｒが指し示す下位のブロック１２１Ｂを次の検索対象とする第５のステップ（図１ステップＳ６）と、ブロック１２１Ｂは最下位のブロックなので（図１Ｓステップ５／Ｙｅｓ）、索引レコード１２１１Ｒ内のレコード番号Ｒ１１を求め、記憶装置９０内の中間結果領域９０１Ｔに格納する第６のステップ（図１ステップＳ７）と、次に、まだ、未検索の条件があるかどうか調べ、未検索の条件があれば、第２のステップの処理に移る第７のステップ（図１ステップＳ８）と、入力パラメータを、中間結果領域９０１Ｔ内の「Ｒ１１，Ｒ１５」、および、中間結果領域９０２Ｔ内の「Ｒ２３，Ｒ２５」とする第８のステップ（図１ステップＳ９）と、最上位のブロック４１１Ｂはレコード番号カラム３０１Ｃに対応づけられているので、比較値として「Ｒ１１」を用いる第９のステップ（図１ステップＳ１０）と、最上位のブロック４１１Ｂ内の索引レコードの内容とＲ１１とを昇順に比較し、Ｒ１１を越えない最大の値を持つ索引レコード４１１１Ｒを求める第１０のステップ（図１ステップＳ１１）と、ブロック４１１Ｂが最下位ブロックかどうか調べる第１１のステップ（図１ステップＳ１２）と、ブロック４１１Ｂが最下位のブロックではないと（図１ステップＳ１２／Ｎｏ）、索引レコード４１１１Ｒが指す下位のブロック４２１Ｂを次の検索対象とし、第９のステップに移る第１２のステップ（図１ステップＳ１３）と、検索したブロックが最下位ブロックであると（図１ステップＳ１２／Ｙｅｓ）、索引レコード４３１２Ｒが含むレコード番号Ｒ０７を記憶装置９０内の検索結果領域９１０Ｔに格納する第１３のステップ（図１ステップＳ１４）と、条件の組み合わせがまだ存在すかどうか調べ、存在すれば第８のステップに移る第１４のステップ（図１ステップＳ１５）を含む検索処理方法である。
【００６７】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
図７は、本発明の第３の実施の形態を示すブロック図である。
図７を参照すると、本発明の第３の実施の形態は、抽出条件「Ｖａｌ−１Ａ」を入力パラメータとする第１のステップ（図１ステップＳ２）と、索引１１Ｘの最上位のブロック１１１Ｂを検索の対象とする第２のステップ（図１ステップＳ３）と、次に、抽出条件「Ｖａｌ−１Ａ」とブロック１１１Ｂ内の索引レコードの内容とを文字コードで昇順に比較し、入力パラメータ「Ｖａｌ−１Ａ」を越えない最大の文字コードのデータを持つ索引レコード１１１１Ｒを求める第３のステップ（図１ステップＳ４）と、このブロック１１１Ｂが最下位のブロックかどうか調べる第４のステップ（図１ステップＳ５）と、この場合、ブロック１１１Ｂは最下位のブロックではないので（図１ステップＳ５／Ｎｏ）、索引レコード１１１１Ｒが指し示す下位のブロック１２１Ｂを次の検索対象とする第５のステップ（図１ステップＳ６）と、ブロック１２１Ｂは最下位のブロックなので（図１Ｓステップ５／Ｙｅｓ）、索引レコード１２１１Ｒ内のレコード番号Ｒ１１を求め、記憶装置９０内の中間結果領域９０１Ｔに格納する第６のステップ（図１ステップＳ７）と、次に、まだ、未検索の条件があるかどうか調べ、未検索の条件があれば、第２のステップの処理に移る第７のステップ（図１ステップＳ８）と、入力パラメータを、中間結果領域９０１Ｔ内の「Ｒ１１，Ｒ１５」、および、中間結果領域９０２Ｔ内の「Ｒ２３，Ｒ２５」とする第８のステップ（図１ステップＳ９）と、最上位のブロック４１１Ｂはレコード番号カラム３０１Ｃに対応づけられているので、比較値として「Ｒ１１」を用いる第９のステップ（図１ステップＳ１０）と、最上位のブロック４１１Ｂ内の索引レコードの内容とＲ１１とを昇順に比較し、Ｒ１１を越えない最大の値を持つ索引レコード４１１１Ｒを求める第１０のステップ（図１ステップＳ１１）と、ブロック４１１Ｂが最下位ブロックかどうか調べる第１１のステップ（図１ステップＳ１２）と、ブロック４１１Ｂが最下位のブロックではないと（図１ステップＳ１２／Ｎｏ）、索引レコード４１１１Ｒが指す下位のブロック４２１Ｂを次の検索対象とし、第９のステップに移る第１２のステップ（図１ステップＳ１３）と、検索したブロックが最下位ブロックであると（図１ステップＳ１２／Ｙｅｓ）、索引レコード４３１２Ｒが含むレコード番号Ｒ０７を記憶装置９０内の検索結果領域９１０Ｔに格納する第１３のステップ（図１ステップＳ１４）と、条件の組み合わせがまだ存在すかどうか調べ、存在すれば第８のステップに移る第１４のステップ（図１ステップＳ１５）とをコンピュータ５００（たとえば、データベース管理装置８０）に実行させるプログラムを記録する記録媒体５２０である。このプログラムは、記録媒体５２０からコンピュータ５００にロードされ実行される。
【００６８】
以上は、２つの被結合表について説明したが、３以上の被結合表にも容易に適用できる。
【００６９】
【発明の効果】
本発明の第１の効果は、検索が高速に実行できることである。その理由は、レコード番号の組み合わせを持つ索引を用い、記憶装置へのアクセスの回数を減少されるからである。
【００７０】
また、第２の効果は、検索処理において汎用性が高いことである。その理由は、全ての結合表に対して、コード番号の組み合わせを持つ索引を作成するからである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の動作を示すフローチャートである。
【図２】本発明の第１の実施の形態を示すブロック図である。
【図３】図２の結合表および被結合表を示す説明図である。
【図４】図２の索引を示す説明図である。
【図５】索引内のブロックの内容を示す説明図である。
【図６】図２の索引を示す説明図である。
【図７】本発明の第３の実施の形態を示すブロック図である。
【符号の説明】
１０Ｔ    被結合表
１１Ｘ    索引
２０Ｔ    被結合表
２１Ｘ    索引
３０Ｔ    結合表
４０Ｘ    索引
８０    データベース管理装置
９０    記憶装置
１００Ｃ    レコード番号カラム
１０１Ｃ    キー値カラム
１０２Ｃ    データカラム
１１１Ｂ    ブロック
１２１Ｂ    ブロック
１２２Ｂ    ブロック
２００Ｃ    レコード番号カラム
２０１Ｃ    キー値カラム
２０２Ｃ    データカラム
２１１Ｂ    ブロック
２２１Ｂ    ブロック
２２２Ｂ    ブロック
３００Ｃ    レコード番号カラム
３０１Ｃ    レコード番号カラム
３０２Ｃ    レコード番号カラム
４１１Ｂ    ブロック
４２１Ｂ    ブロック
４２２Ｂ    ブロック
４３１Ｂ    ブロック
４３２Ｂ    ブロック
４３３Ｂ    ブロック
４３４Ｂ    ブロック
４３５Ｂ    ブロック
５００    コンピュータ
５２０    記録媒体
９０１Ｔ    中間結果領域
９０２Ｔ    中間結果領域
９１０Ｔ    検索結果領域
１１１１Ｒ    索引レコード
１１１２Ｒ    索引レコード
１２１１Ｒ    索引レコード
１２１２Ｒ    索引レコード
１２１３Ｒ    索引レコード
１２２１Ｒ    索引レコード
１２２２Ｒ    索引レコード
２１１１Ｒ    索引レコード
２１１２Ｒ    索引レコード
２２１１Ｒ    索引レコード
２２１２Ｒ    索引レコード
２２１３Ｒ    索引レコード
２２２１Ｒ    索引レコード
２２２２Ｒ    索引レコード
４１１１Ｒ    索引レコード
４１１２Ｒ    索引レコード
４２１１Ｒ    索引レコード
４２１２Ｒ    索引レコード
４２１３Ｒ    索引レコード
４２２１Ｒ    索引レコード
４２２２Ｒ    索引レコード
４３１１Ｒ    索引レコード
４３１２Ｒ    索引レコード
４３２１Ｒ    索引レコード
４３２２Ｒ    索引レコード
４３２３Ｒ    索引レコード
４３３１Ｒ    索引レコード
４３３２Ｒ    索引レコード
４３４１Ｒ    索引レコード
４３５１Ｒ    索引レコード
【図１】
0003591406.tif 000002
【図２】
0003591406.tif 000003
【図３】
0003591406.tif 000004
【図４】
0003591406.tif 000005
【図５】
0003591406.tif 000006
【図６】
0003591406.tif 000007
【図７】
0003591406.tif 000008