(57)【要約】  ＤＢＭＳが、検索クエリから論理式及び各条件式を特定し、特定された各条件式について、条件式に適合するレコードのＩＤの値を抽出する。ＤＢＭＳは、レコードＩＤの値と複数の条件式にそれぞれ対応する複数の適合結果値とを有する判定セットを含んだ情報である論理式判定情報内の、抽出したレコードＩＤ値及び条件式に対応する適合結果値を、適合を意味する第１の値に変更し、論理式判定情報における各判定セットについて、判定セットが有する複数の適合結果値を論理式に基づいて論理演算する。ＤＢＭＳは、論理演算の結果として適合を意味する第１の値が得られた判定セットが有するレコードＩＤ値に適合するレコードＩＤ値に対応するレコードを、検索クエリで指定されているテーブルから検索し、その検索の結果に関する検索結果情報を出力する。
2012164738.tif 000002
【特許請求の範囲】
【請求項１】
複数の条件式の組み合わせで構成された論理式が記述されている検索クエリを解析することにより、前記検索クエリから前記論理式及び各条件式を特定する検索クエリ解析部と、
前記特定された各条件式について、前記条件式に適合するレコードのＩＤの値を抽出する条件式処理部と、
レコードＩＤの値と前記複数の条件式にそれぞれ対応する複数の適合結果値とを有する判定セットを含んだ情報である論理式判定情報内の、前記抽出したレコードＩＤ値及び前記条件式に対応する適合結果値を、適合を意味する第１の値に変更し、前記論理式判定情報における各判定セットについて、前記判定セットが有する複数の適合結果値を前記論理式に基づいて論理演算する第１の論理式処理部と、
前記論理演算の結果として適合を意味する第１の値が得られた判定セットが有するレコードＩＤ値に適合するレコードＩＤ値に対応するレコードを、前記検索クエリで指定されているテーブルから検索し、その検索の結果に関する検索結果情報を出力する検索結果生成部と
を備えるデータベース管理システム。
【請求項２】
第２の論理式処理部をさらに備え、
前記論理式判定情報は、第１の記憶装置に格納されており、
前記テーブルは、第２の記憶装置に格納されており、
前記論理式処理部は、
前記抽出されたレコードＩＤ値が、前記論理式判定情報が有するいずれのレコードＩＤ値とも適合しない場合、前記論理式判定情報に新たな判定セットを追加できるか否かを判定し、
前記判定の結果が否定的な場合、前記条件式に対応するレコードＩＤ値として、前記抽出されたレコードＩＤ値を前記第２の記憶装置に格納し、
前記第２の論理式処理部は、前記第２の記憶装置に格納されているレコードＩＤ値が前記複数の条件式のいずれに対応するかを基に、そのレコードＩＤ値について、前記論理式の論理演算を実行し、
前記検索結果生成部は、前記第１の論理式処理部による前記論理演算の結果として適合を意味する第１の値が得られたレコードＩＤ値に対応するレコードと、前記第２の論理式処理部による前記論理演算の結果として適合を意味する第１の値が得られたレコードＩＤ値に対応するレコードとを、前記検索クエリで指定されているテーブルから検索し、その検索の結果に関する検索結果情報を出力する
請求項１記載のデータベース管理システム。
【請求項３】
前記第１の論理式処理部は、前記判定の結果が肯定的な場合、前記抽出されたレコードＩＤ値を有する新たな判定セットを前記論理式判定テーブルに追加し、
前記論理式判定情報に新たな判定セットを追加できるか否かの判定は、前記論理式判定情報に含まれている判定セットの数が所定数以下か否かである
請求項２記載のデータベース管理システム。
【請求項４】
前記第１の論理式処理部は、前記論理式判定情報において、前記複数の適合結果値の全てが前記第１の値である判定セットを前記論理式判定情報から削除する、
請求項３記載のデータベース管理システム。
【請求項５】
前記第１の論理式処理部は、前記判定の結果が肯定的な場合、前記抽出されたレコードＩＤ値が前記第２の記憶装置に格納されていなければ、前記抽出されたレコードＩＤ値を有する新たな判定セットを前記論理式判定テーブルに追加し、前記第２の記憶装置に前記抽出されたレコードＩＤ値が前記記憶領域に格納されていれば、前記抽出されたレコードＩＤ値を前記第２の記憶装置に格納する、
請求項４記載のデータベース管理システム。
【請求項６】
前記１の記憶装置は、前記第２の記憶装置よりもデータの入出力の速度が早い
請求項５記載のデータベース管理システム。
【請求項７】
前記第１の論理式処理部は、前記判定の結果が肯定的な場合、前記抽出されたレコードＩＤ値が前記第２の記憶装置に格納されていなければ、前記抽出されたレコードＩＤ値を有する新たな判定セットを前記論理式判定テーブルに追加し、前記第２の記憶装置に前記抽出されたレコードＩＤ値が前記記憶領域に格納されていれば、前記抽出されたレコードＩＤ値を前記第２の記憶装置に格納する、
請求項２記載のデータベース管理システム。
【請求項８】
前記第１の論理式処理部は、前記論理式判定情報において、前記複数の適合結果値の全てが前記第１の値である判定セットを前記論理式判定情報から削除する
請求項１記載のデータベース管理システム。
【請求項９】
前記条件式処理部と前記第１の論理式処理部はそれぞれ独立したプロセスとして実行され、
前記条件式処理部が、前記条件式のＩＤと前記抽出されたレコードＩＤ値とを含んだ情報である条件式適合情報を、記憶領域に格納し、
前記第１の論理式処理部が、前記記憶領域から、前記条件式適合情報を取得し、その情報から、前記レコードＩＤ値を取得する
請求項１記載のデータベース管理システム。
【請求項１０】
前記クエリ解析部において抽出された条件式ごとに前記条件式処理部のプロセスが実行され、前記プロセスは並列に実行される
請求項１記載のデータベース管理システム。
【請求項１１】
前記論理式処理部は、
前記抽出されたレコードＩＤ値が、前記論理式判定情報が有するいずれのレコードＩＤ値とも適合しない場合、前記論理式判定情報に新たな判定セットを追加できるか否かを判定し、
前記判定の結果が肯定的な場合、前記抽出されたレコードＩＤ値を有する新たな判定セットを前記論理式判定テーブルに追加する、
請求項１記載のデータベース管理システム。
【請求項１２】
前記論理式判定情報に新たな判定セットを追加できるか否かの判定は、前記論理式判定情報に含まれている判定セットの数が所定数以下か否かである
請求項１１記載のデータベース管理システム。
【請求項１３】
第２の記憶装置が、前記テーブルを記憶し、前記第２の記憶装置よりもデータの入出力の速度が早い第１の記憶装置が、前記論理式判定情報を記憶する、
請求項１記載のデータベース管理システム。
【請求項１４】
複数の条件式の組み合わせで構成された論理式が記述されている検索クエリを解析することにより、前記検索クエリから前記論理式及び各条件式を特定し、
前記特定された各条件式について、前記条件式に適合するレコードのＩＤの値を抽出し、
レコードＩＤの値と前記複数の条件式にそれぞれ対応する複数の適合結果値とを有する判定セットを含んだ情報である論理式判定情報内の、前記抽出したレコードＩＤ値及び前記条件式に対応する適合結果値を、適合を意味する第１の値に変更し、前記論理式判定情報における各判定セットについて、前記判定セットが有する複数の適合結果値を前記論理式に基づいて論理演算し、
前記論理演算の結果として適合を意味する第１の値が得られた判定セットが有するレコードＩＤ値に適合するレコードＩＤ値に対応するレコードを、前記検索クエリで指定されているテーブルから検索し、その検索の結果に関する検索結果情報を出力する、
データベース管理方法。
【請求項１５】
検索クエリを受け付けるインタフェース装置と、
第２の記憶装置よりもデータ入出力速度が速い第１の記憶装置と、
前記インタフェース装置及び前記第１の記憶装置に接続されたプロセッサと
を有し、
前記プロセッサが、
複数の条件式の組み合わせで構成された論理式が記述されている検索クエリを解析することにより、前記検索クエリから前記論理式及び各条件式を特定し、
前記特定された各条件式について、前記条件式に適合するレコードのＩＤの値を抽出し、
レコードＩＤの値と前記複数の条件式にそれぞれ対応する複数の適合結果値とを有する判定セットを含んだ情報であり前記第１の記憶装置に格納された論理式判定情報内の、前記抽出したレコードＩＤ値及び前記条件式に対応する適合結果値を、適合を意味する第１の値に変更し、前記論理式判定情報における各判定セットについて、前記判定セットが有する複数の適合結果値を前記論理式に基づいて論理演算し、
前記論理演算の結果として適合を意味する第１の値が得られた判定セットが有するレコードＩＤ値に適合するレコードＩＤ値に対応するレコードを、前記検索クエリで指定されており前記第２の記憶装置内のテーブルから検索し、その検索の結果に関する検索結果情報を出力する、
データベース管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理の技術に関する。
【背景技術】
【０００２】
データベース（以下「ＤＢ」という）のデータ保持方式の一つとして、Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ（以下「ＲＤＢ」という）が知られている。ＲＤＢは、複数のカラムを有する複数のレコードから構成されるテーブルによってデータを管理する。各レコードは、一般に、そのレコードを一意に識別可能なレコードＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）を有する。【０００３】
また、ＤＢからデータを検索するシステムとして、データベース管理システム（以下「ＤＢＭＳ」という）がある。ＤＢＭＳは、検索クエリを受け、検索クエリに記述されている検索式を用いて、所望のデータをＤＢから抽出する。【０００４】
特許文献１には、検索クエリとしてＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）を用いて、所望のデータを抽出する方式が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第６０８１７９９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図１４は、従来の検索方式の一例を示す。以下、図１４を用いて、例えば特許文献１に記載されているような従来の検索方式について説明する。なお、図１４には、同種の要素に付された参照符号は、親符号と子符号との組合せで構成されているが、以下の説明では、同種の要素を特に区別しない場合には、親符号のみを使用することにする。【０００７】
検索クエリ９００には、検索式（以下、論理式）９０２が記述されている。論理式９０２は、複数の条件式の組合せで構成されている。ＤＢＭＳは、検索クエリ９００の条件式９０１を満たすレコードのレコードＩＤそれぞれを抽出し、条件式９０１ごとに、レコードＩＤのリスト９２０を生成する（９１１）。ＤＢＭＳは、各条件式９０１のレコードＩＤリスト９２０をソートし、ソート済みのレコードＩＤリスト９２１を生成する（９１２）。ＤＢＭＳは、条件式９０１ａ〜９０１ｃのソート済みレコードＩＤリスト９２１ａ〜９２１ｃを、論理式９０２に基づいて論理演算し、演算結果が「真」となったレコードＩＤを含んだ論理演算済みレコードＩＤリスト９２２を生成する。【０００８】
以上の処理により、ＤＢＭＳは、検索クエリ９００に適合するレコードＩＤをＲＤＢから抽出できる。【０００９】
しかし、上記の方式は、条件式を満たすレコードＩＤが多い場合、レコードＩＤリストのデータサイズが大きくなり、ソートの処理を主記憶装置（例えばメモリ）内だけで完結できない。この場合、主記憶装置よりも記憶容量の大きい補助記憶装置（例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はフラッシュメモリ等）を使用してソートをする必要がある。しかし、補助記憶装置は主記憶装置と比較してデータの入出力の速度が遅いため、ソートに要する時間が長くなってしまう。すなわち、検索処理にかかる時間が長くなってしまう。【００１０】
そこで、本発明の目的は、複数の条件式の組み合わせで構成された検索式に適合するデータをＤＢから検索する処理に要する時間を短縮することである。
【課題を解決するための手段】
【００１１】
データベース管理システム（ＤＢＭＳ）が、検索クエリから論理式及び各条件式を特定し、特定された各条件式について、条件式に適合するレコードのＩＤの値を抽出する。ＤＢＭＳは、レコードＩＤの値と複数の条件式にそれぞれ対応する複数の適合結果値とを有する判定セットを含んだ情報である論理式判定情報内の、抽出したレコードＩＤ値及び条件式に対応する適合結果値を、適合を意味する第１の値に変更し、論理式判定情報における各判定セットについて、判定セットが有する複数の適合結果値を論理式に基づいて論理演算する。ＤＢＭＳは、論理演算の結果として適合を意味する第１の値が得られた判定セットが有するレコードＩＤ値に適合するレコードＩＤ値に対応するレコードを、検索クエリで指定されているテーブルから検索し、その検索の結果に関する検索結果情報を出力する。第２の記憶装置が、上記テーブルを記憶し、第２の記憶装置よりもデータの入出力の速度が早い第１の記憶装置が、論理式判定情報を記憶する。第１の記憶装置は、例えば、主記憶装置であり、第２の記憶装置は、例えば、補助記憶装置である。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係るＤＢ管理装置の構成の一例を示す。
【図２】ＤＢＭＳ１０の機能ブロックの一例を示す。
【図３】図３Ａは、テーブルＴ１の一例を示す。図３Ｂは、インデクス１００の一例を示す。
【図４】検索クエリの一例を示す。
【図５】条件式処理部２２の処理概要の一例を示す。
【図６】論理式判定テーブル２６の一例を示す。
【図７】図７Ａは、検索結果生成部２４の処理概要の一例を示す。図７Ｂは、レコードＩＤリスト６０１の一例を示す。
【図８】検索クエリ解析部２１の処理フローの一例を示す。
【図９】条件式処理部２２の処理フローの一例を示す。
【図１０】論理式処理部２３の処理フローの一例を示す。
【図１１】論理式処理部２３における完了判定の処理フローの一例を示す。
【図１２】論理式処理部２３における新規エントリ生成の処理フローの一例を示す。
【図１３】検索結果生成部２４の処理フローの一例を示す。
【図１４】従来の検索方式の一例を示す。
【発明を実施するための形態】
【００１３】
図１は、本発明の一実施形態に係るＤＢ管理装置の構成の一例を示す。
【００１４】
ＤＢ管理装置１は、検索クエリを受信し、その検索クエリに記述されている検索式（論理式）に適合するデータをＤＢ１１内のテーブルから検索し、検索の結果（例えば、該当したレコードの数を表す情報、該当したレコードが有する情報）を出力する。検索クエリは、外部の装置から入力される。外部の装置は、入力装置（図示せず）であっても良いし、記憶メディアであっても良いが、本実施形態では、ＤＢ管理装置１と通信する通信端末（以下、端末３）である。
【００１５】
ＤＢ管理装置１は、計算機であり、ＣＰＵ４、メモリ５、機器インタフェース（以下「Ｉ／Ｆ」という）６、及び通信Ｉ／Ｆ７を備えている。それらの構成要素がバス２０を介して互いに接続されている。以下、各構成要素について説明する。
【００１６】
ＣＰＵ（Central  Processing  Unit）４は、メモリ５又は記憶装置２に保持されているコンピュータプログラム（以下「プログラム」という）を実行する。例えば、ＣＰＵ４は、ＤＢＭＳ１０を実行して、計算機をＤＢ管理装置１として実現する。ＤＢＭＳ１０の詳細説明は、後述する。なお、以下の説明では、プログラム（具体的には、例えば、ＤＢＭＳ又はそれが有する機能）を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ４）によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ５）、Ｉ／Ｆ６及び／又はＩ／７を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、ＤＢ管理装置１が行う処理としても良い。また、プロセッサは、ＣＰＵ４の他に、ＣＰＵ４が行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースか各計算機にインストールされて良い。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアで良い。
【００１７】
メモリ５は、主記憶装置の一例であり、例えば、揮発性のメモリである。故に、メモリ５に保持されているプログラム及びデータは、そのメモリへの電力供給が絶たれると消去される。メモリ５は、通常、記憶装置２よりも高速にデータを入出力できる。メモリ５は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００１８】
記憶装置２は、補助記憶装置の一例であり、例えば、不揮発性の記憶装置である。故に、記憶装置２に保持されているデータは、その記憶装置２への電力供給が絶たれても消去されない。記憶装置２は、通常、メモリ４５比較して記憶容量が大きい。したがって、データサイズの大きいＤＢ１１は、通常、記憶装置２に保持される。ＤＢ１１は、テーブルＴ１と、テーブルＴ１が有する複数のカラムにそれぞれ対応した複数のインデクス１００と、検索クエリに記述されている複数の条件式にそれぞれ対応した複数のレコードＩＤリスト６０１とを含む。記憶装置２は、ＨＤＤ又はフラッシュメモリ等の外付け式のメディアドライブでも良いし、複数のメディアドライブを有するＲＡＩＤ記憶システム（例えばディスクアレイ装置）でも良い。なお、図１に示す記憶装置２は、ＤＢ管理装置１の外部に配置されているが、これに限られない。例えば、記憶装置２は、ＤＢ管理装置１の内部に配置されてもよい。また、記憶装置２は複数配置されてもよい。また、例えば、リスト６０１はＤＢ１１に含まれなくても良い。
【００１９】
機器Ｉ／Ｆ６は、ＤＢ管理装置１と記憶装置２を接続するためのＩ／Ｆである。ＤＢ管理装置１は、機器Ｉ／Ｆ６を介して、記憶装置２にデータを入出力できる。機器Ｉ／Ｆ６は、例えば、Ｓｅｒｉａｌ  ＡＴＡポート、ＰＣＩ  Ｅｘｐｒｅｓｓポート、ＳＣＳＩポート、又はＵＳＢポート等で良い。機器Ｉ／Ｆ６は複数備えられてもよい。
【００２０】
通信Ｉ／Ｆ７は、ＤＢ管理装置１を外部の通信機器と通信するためのＩ／Ｆである。ＤＢ管理装置１は、通信Ｉ／Ｆ７を介して、例えば通信ネットワークに接続されている１又は複数の端末３と通信できる。通信Ｉ／Ｆ７は、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ポート等で良い。通信Ｉ／Ｆは複数備えられてもよい。
【００２１】
端末３は、ＤＢ管理装置１に検索クエリを送信し、ＤＢ管理装置１から検索結果を得る情報処理装置である。端末３は、例えば、パーソナルコンピュータ、或いは携帯電話機等で良い。
【００２２】
図２は、ＤＢＭＳ１０の機能ブロックの一例を示す。
【００２３】
ＤＢＭＳ１０は、検索クエリ解析部２１と、条件式処理部２２と、論理式処理部２３と、検索結果生成部２４と、ソート処理部２８とを備える（各機能ブロックが行う処理は後に説明する）。また、ＤＢＭＳ１０は、論理式判定テーブル２６をメモリ５上に作成し、且つ、条件式適合情報管理部２５及び論理式適合情報管理部２７としての領域をメモリ５上に確保する。
【００２４】
ＤＢ１１は、前述したように、テーブルＴ１と、複数のインデクス１００と、複数のレコードＩＤリスト６０１とを含む。
【００２５】
図３Ａは、ＤＢ１１が保持するテーブルＴ１の一例を示す。なお、図３を含む幾つかの図では、同種の要素に付された参照符号は、親符号と子符号との組合せで構成されているが、以下の説明では、同種の要素を特に区別しない場合には、親符号のみを使用することにする。
【００２６】
テーブルＴ１は、複数のカラム１１０を有する複数のレコード１０１から構成される。レコード１０１は、「レコードＩＤ」カラム１１０ａ、「Ｃ１」カラム１１０ｂ、「Ｃ２」カラム１１０ｃ、及び「Ｃ３」カラム１１０ｄの値を有する。ここで、「レコードＩＤ」カラム１１０ａの値は、レコードを一意に識別可能なＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）である。以下、「レコードＩＤ」カラム１１０ａの値を「レコードＩＤ値」という。「Ｃ１」カラム１１０ｂの値を「Ｃ１値」という。他も同様とする。
【００２７】
図３Ｂは、インデクス１００の一例を示す。
【００２８】
複数のカラム「Ｃ１」〜「Ｃ３」にそれぞれ対応する複数の複数のインデクス１００ａ〜１００ｃがある。インデクス１００は、複数のエントリで構成されている。インデクス１００（例えば１００ａ）のエントリには、そのインデクス１００に対応するカラムの値（例えば、「Ｃ１」の値として、「８」）と、その値が登録されているレコード（テーブルＴ１内のレコード）のレコードＩＤ（例えば、「２１０」）とが登録されている。
【００２９】
図４は、検索クエリの一例を示す。
【００３０】
検索クエリ２００は、ＤＢ１１から所望のデータを抽出するための検索式（論理式）が記述された問合せであり、例えば、ＳＱＬで記述される。
【００３１】
図４に示す検索クエリ２００は、条件式２０１ａ〜２０１ｃの組合せである論理式２０２に適合するレコードをテーブルＴ１（１００）から選択する、ことを意味する。検索クエリ２００には、論理式２０２が記述されており、論理式２０２は、通常、複数の条件式２０１の組合せである。条件式２０１は、例えば、算術演算子、関係演算子及び関数のうちの少なくとも１つを含んで良い。論理式２０２は、例えば、論理演算子及び関数のうちの少なくとも一方を含んで良い。
【００３２】
ＤＢ管理装置１が、端末３から検索クエリを受信し、ＤＭＢＳ１０が、その検索クエリを解析する。具体的には、例えば、検索クエリ解析部２１は、検索クエリ２００を解析して、条件式２０１ａ「Ｃ１＞１０」、条件式２０１ｂ「Ｃ２＜５」、条件式２０１ｃ「Ｃ３≧５０」を抽出する。そして、検索クエリ解析部２１は、抽出した条件式２０１ａ、２０１ｂ及び２０１ｃに対して、それぞれの条件式を一意に識別可能な条件式ＩＤ２１１ａ「Ｘ１」、２１１ｂ「Ｘ２」及び２１１ｃ「Ｘ３」を付与する。さらに、検索クエリ解析部２１は、検索クエリ２００を解析して、論理式２０２「Ｘ１  ＡＮＤ  （Ｘ２  ＯＲ  Ｘ３）」を抽出する。以上の処理により、検索クエリ解析部２１は、条件式２０１と論理式２０２を抽出する。
【００３３】
検索クエリ解析部２１は、条件式２０１に否定（ＮＯＴ）の論理演算子を有する場合、その否定の論理演算子を展開した条件式に置換する。例えば、条件式が「ＮＯＴ（Ｃ１＞１０）」であった場合、ＮＯＴを展開した条件式「Ｃ≦１０」に置換する。これにより、後述する論理式判定テーブル２６を用いた検索が可能となる。
【００３４】
条件式処理部２２は、検索クエリ２００で指定されたテーブルＴ１に対応するインデクス１００から、条件式２０１に適合するレコードＩＤ値を抽出し、条件式ＩＤ２１１とレコードＩＤ値とをセットにした条件式適合情報３０１を生成する。なお、条件式適合情報３０１に含まれる情報はこれに限られない。例えば、条件式適合情報３０１にインデクス１００の識別情報又はレコード１０１の更新日などが含まれてもよい。
【００３５】
図５は、条件式処理部２２の処理概要の一例を示す。以下、図５を用いて、条件式適合情報３０１の生成について説明する。
【００３６】
例えば、条件式処理部２２は、Ｃ１値が「Ｃ１＞１０」であるレコード１０１ｂ，１０１ｃ，１０１ｅ，１０１ｆを抽出し、各レコードのレコードＩＤ値「２」、「３」、「５」、「６」を抽出する。そして、条件式処理部２１は、例えばレコードＩＤ値「２」に対して、条件式２０１ａに対応する条件式ＩＤ２１１ａの「Ｘ１」と抽出したレコードＩＤ値「２」とをセットにした条件式適合情報３０１を生成する。そして、条件式判定部２１は、生成した条件式適合情報３０１を条件式適合情報管理部２５に出力する。条件式判定部２１は、他の条件式２０１ｂ及び２０１ｃについても同様に条件式適合情報３０１を生成し、条件式適合情報管理部２５に出力する。条件式適合情報２５については後述する。
【００３７】
また、検索クエリ解析部２１は、抽出した条件式２０１に基づいて、論理式判定テーブル２６をメモリ５上に生成する。すなわち、検索クエリ解析部２１は、メモリ５上に論理式判定テーブル２６を生成するためのメモリ領域を確保する。このとき、検索クエリ解析部２１は、論理式判定テーブル２６にエントリ可能なレコードの最大数を算出し、その算出した値をレコード最大数とする。レコード最大数は、メモリサイズ（例えば、メモリ５の全域又は所定領域のサイズ）と抽出した条件式２０１の数によって決定される。例えば、所定のメモリサイズにおいて、抽出した条件式２０１の数が少なければ、論理式判定テーブル２６のカラム４１０の数が少なくなるので、メモリ５の空き容量はその分大きく、故に、レコード最大数は多くなる。逆に、所定のメモリサイズにおいて、抽出した条件式２０１の数が多ければ、論理式判定テーブル２６のカラム４１０の数が多くなるので、メモリ５の空き容量はその分小さく、故に、レコード最大数は少なくなる。
【００３８】
条件式処理部２１は、条件式２０１に適合するレコードＩＤの抽出を全て完了したとき、条件式処理の完了を示す条件式完了情報を生成し、条件式適合情報管理部２５に出力する。条件式完了情報は、例えば、自己の条件式ＩＤ（レコードＩＤの抽出が全て完了した条件式２０１のＩＤ）と完了を示す文字列とを含んだ情報であってもよい。
【００３９】
条件式処理部２１は、条件式２０１ごとに独立したプロセス（すなわち、マルチタスク）が実行されてもよい。例えば、図５に示す条件式２０１の数は３つなので、独立した３つの条件式処理部２１のプロセスが実行されてもよい。
【００４０】
条件式適合情報管理部２５は、例えば、ＦＩＦＯ（Ｆｉｒｓｔ−ｉｎ，  Ｆｉｒｓｔ−ｏｕｔ）形式で情報が入出力される領域（例えばバッファもしくはキュー）であり、メモリ５上に構成される。条件式適合情報管理部２５には、条件式処理部２１から出力された条件式適合情報３０１がバッファリングされる。条件式処理部２１が独立したプロセスで実行される場合、それぞれの条件式処理部２１から出力される条件式適合情報３０１は、１つの条件式適合情報管理部２５にバッファリングされる。なお、条件式適合情報管理部２５は、条件式適合情報３０１がバッファリングされた際、その旨を論理式処理部２３に通知するようにしてもよい。
【００４１】
論理式処理部２３は、条件式適合情報３０１に基づいて、論理式判定テーブル２６の「条件式ＩＤ」カラム４１０ｂ〜４１０ｄの値を変更する。また、論理式処理部２３は、論理式判定テーブル２６の各レコード４０１について、「条件式ＩＤ」カラム４１０ｂ〜４１０ｄの値を論理式２０２に代入して論理演算し、その結果を「論理演算結果」カラム４１０ｅに登録する。
【００４２】
図６は、論理式判定テーブル２６の一例を示す。
【００４３】
論理式判定テーブル２６は、「レコードＩＤ」カラム４１０ａと、「条件式ＩＤ」カラム４１０ｂ〜４１０ｄと、「論理演算結果」カラム４１０ｅを有する複数のレコード４０１から構成される。なお、論理式判定テーブル２６は、これ以外のカラム４１０を有してもよい。例えば、検索の高速化のために、レコードＩＤ値から算出したハッシュ値を有するカラム４１０を、論理式判定テーブル２６に追加してもよい。論理式判定テーブル２６が有する情報は、必ずしもテーブル形式で格納されなくても良い。
【００４４】
論理式処理部２３は、条件式適合情報管理部２５から条件式適合情報３０１を取得して、その情報３０１から条件式ＩＤ（例えば「Ｘ１」）とレコードＩＤ値（例えば「２」）を抽出する。そして、論理式処理部２３は、論理式判定テーブル２６から、「レコードＩＤ」カラム４１０ａにおいて、抽出したレコードＩＤ値（例えば「２」）を有するレコード４０１ｂを検索する。そして、論理式判定部２３は、見つかったレコード４０１ｂにおいて、上記抽出した条件式ＩＤ（例えば「Ｘ１」）のカラム４１０の値を「偽」から「真」に変更する。なお、「レコードＩＤ」カラム４１０ａからレコードＩＤ値を発見できなかった場合、論理式処理部２３は、論理式判定テーブル２６に新規エントリを追加する、もしくは、記憶装置２に条件式適合情報３０１を保持させてソート処理部２８に検索を実行させる。この処理については後述する。
【００４５】
論理式判定部２３は、同一のレコードＩＤのレコード（例えば４０１ｂ）における「条件式ＩＤ：Ｘ１」カラム４１０ｂと、「条件式ＩＤ：Ｘ２」カラム４１０ｃと、「条件式ＩＤ：Ｘ３」カラム４１０ｄの値を論理式２０２に代入して論理演算をする。例えば、レコード４０１ｂであれば、「真  ＡＮＤ  （真  ＯＲ  偽）」の論理演算が実行され、故に、この論理演算結果は「真」となる。論理式処理部２３は、論理演算結果（例えば「真」）の値を、同一のレコードＩＤのレコード（例えば４０１ｂ）における「論理演算結果」カラム４１０ｅに登録する。
【００４６】
論理式処理部２３は、論理演算結果値が「真」のレコード４０１のレコードＩＤ値を含んだ論理式適合情報３０２を論理式適合情報管理部２７に出力する。
【００４７】
論理式処理部２３は、論理演算の結果、全ての条件式ＩＤカラム４１０ｂ〜４１０ｄの値が「真」となったレコードを論理式判定テーブル２６から削除するようにしてもよい。これにより、論理判定テーブル２６に現存するレコードの数が減少するため、論理判定テーブル２６に新規エントリ可能なレコードの数が増加する。すなわち、レコード最大数と現存するレコード数との差分である新規エントリ可能なレコード数が増加する。これにより、より多くのレコードをメモリ上で処理することができるため、検索処理に要する時間を短縮できる。なお、全ての条件式ＩＤカラム４１０ｂ〜４１０ｄについて「真」という値が登録されたレコードは、そのレコードに全ての条件式ＩＤカラム４１０ｂ〜４１０ｄについて「真」という値が登録されたタイミングで、削除されて良いし、定期的に、そのようなレコードの有無がチェックされ、そのようなレコードが検出されたタイミングで、検出されたレコードが削除されて良い。
【００４８】
論理式処理部２３は、全ての条件式処理部２２から条件完了情報を取得したとき、条件式適合情報３０１を論理式判定テーブル２６に反映する処理が完了したと判断する。そして、論理式処理部２３は、自己の処理が全て完了したとき、論理式処理部２３の処理の完了を示す論理完了情報を論理式適合情報管理部２７に出力する。この処理については後述する。
【００４９】
論理式適合情報管理部２７は、例えば、ＦＩＦＯ形式で情報が入出力される領域（例えばバッファもしくはキュー）であり、メモリ上に構成される。論理式適合情報管理部２７には、論理式処理部２３から出力される論理式適合情報３０２がバッファリングされる。論理式適合情報３０２には、論理演算結果４１０ｅの値が「真」のレコード４０１のレコードＩＤ値が含まれる。なお、論理式適合情報管理部２７は、論理式適合情報３０２がバッファリングされた際、その旨を検索結果生成部２４に通知するようにしてもよい。
【００５０】
検索結果生成部２４は、論理式適合情報管理部２７から論理式適合情報３０２を取得し、その論理式適合情報３０２に含まれるレコードＩＤ値に基づき、テーブルＴ１からそのレコードＩＤ値を有するレコードを抽出する。
【００５１】
図７Ａは、検索結果生成部２４の処理概要の一例を示す。
【００５２】
検索結果生成部２４は、論理式適合情報管理部２７から、論理式適合情報３０２を１つ取得し、そのレコードＩＤ値を有するレコードをテーブルＴ１から抽出する。検索結果生成部２４は、テーブルＴ１から抽出したレコード（正確には、テーブルＴ１のレコードから抽出した情報）を検索結果テーブル５００に登録する。
【００５３】
例えば、図７Ａにおいて、検索結果生成部２４は、論理式適合情報管理部２７から、レコードＩＤ値「２」を有する論理式適合情報３０２を取得する。そして、検索結果生成部２４は、テーブルＴ１から、レコードＩＤ値「２」を有するレコード１０１ｂを抽出する。そして、検索結果生成部２４は、抽出したレコード１０１ｂを検索結果テーブル５００に登録する（レコード５０１ａ）。他の論理式適合情報３０２に対しても同様の処理を行う。以上の処理により、検索結果生成部２４は、検索結果テーブル５００を生成する。
【００５４】
なお、条件式適合情報管理部２５から出力された全ての条件式適合情報３０１が、論理式判定テーブル２６に直ちに反映されるとは限らない。例えば、条件式判定部２１は、条件式適合情報管理部２５から取得された条件式適合情報３０１が有するレコードＩＤ値に対応したレコードを論理式判定テーブル２６に追加する必要があるが、論理式判定テーブル２６を構成するレコード数が既に所定数（例えばレコード最大数）に達している場合、論理式判定テーブル２６に新たにレコードを追加しない。その場合、条件式判定部２１は、条件式適合情報３０１が有する条件式ＩＤ値に対応したレコードＩＤリスト６０１に、その情報３０１が有するレコードＩＤ値を登録する。図７Ｂは、条件式２０１ａ〜２０１ｃにそれぞれ対応するレコードＩＤリスト６０１ａ〜６０１ｃを示す。レコードＩＤリスト６０１は、１以上のエントリで構成されている。エントリには、レコードＩＤ値が登録される。
【００５５】
検索結果生成部２４は、レコードＩＤリスト６０１ａ〜６０１ｃの少なくとも１つにレコードＩＤ値が登録されている場合、ソート処理部２８に、レコードＩＤリスト６０１ａ〜６０１ｃを用いて、論理演算処理をさせる。具体的には、例えば、ソート処理部２８は、リスト６０１ａ〜６０１ｃに同一のレコードＩＤ値があるか否かを基に、論理式２０２に従う論理演算処理をさせる。その際、例えば、リスト６０１ａからレコードＩＤ値が取得された場合、論理式２０２において、条件式２０１ａについて「真」が採用される。一方、そのレコードＩＤ値と同一のレコードＩＤ値が取得されなかったリストについては、論理式２０２において、そのリストに対応する条件式について「偽」が採用される。そして、検索結果生成部２４は、ソート処理部２８によって特定されたレコードＩＤ値（論理式２０２に該当するレコードＩＤ値）に適合するレコード値を有するレコードをテーブルＴ１から抽出する。検索結果生成部２４は、テーブルＴ１から抽出したレコード（正確には、インデクス１００のレコードから抽出した情報）を含んだ検索結果テーブル５００を生成する。ソート処理部２８からの出力データは、論理式適合情報３０２で良い。ただし、ソート処理部２８がどのような処理によって論理式適合情報３０２を生成するかは問わない。ソート処理部２８は、例えば、図１４を用いて説明した従来の方式に基づいて論理式適合情報３０２を生成してもよいし、本実施形態で説明する論理式処理部２３と同様の方式に基づいて論理式適合情報３０２を生成してもよい。
【００５６】
図８は、検索クエリ解析部２１の処理フローの一例を示す。
【００５７】
検索クエリ解析部２１は、端末３から入力された検索クエリ２００を取得する（Ｓ１１）。
【００５８】
検索クエリ解析部２１は、取得した検索クエリ２００を解析して、条件式２０１及び論理式２０２を抽出する（Ｓ１２）。
【００５９】
検索クエリ解析部２１は、抽出した条件式２０１及び論理式２０２に基づいて、メモリ上に論理式判定テーブル２６を生成する（Ｓ１３）。
【００６０】
検索クエリ解析部２１は、生成した論理式判定テーブル２６に基づいてエントリ最大数を算出する（Ｓ１４）。
【００６１】
検索クエリ解析部２１は、条件式処理部２２を起動し（Ｓ１５）、検索クエリ解析処理を終了する。
【００６２】
なお、条件式２０１が複数存在する場合、条件式２０１ごとに条件式処理部２２の処理プロセスを起動してもよい。
【００６３】
以上の処理により、検索クエリ２００から条件式２０１と論理式２０２が抽出され、条件式処理部２２が起動される。
【００６４】
図９は、条件式処理部２２の処理フローの一例を示す。
【００６５】
条件式処理部２２は、条件式２０１の判定対象とするエントリ（以下「対象エントリ」という）を、その条件式２０１に対応するインデクス１００から１つ抽出し、その対象エントリから、条件式２０１の対象となるカラム値（以下「対象カラム値」という）を取得する（Ｓ２１）。
【００６６】
条件式処理部２２は、対象カラム値が条件式２０１に適合するか否かを判定する（Ｓ２２）。
【００６７】
対象カラム値が条件式２０１に適合する場合（Ｓ２２：ＹＥＳ）、条件式処理部２２は、条件式２０１に対応する条件式ＩＤ２１１と、対象エントリのレコードＩＤ値とをセットにした条件式適合情報３０１を生成し、その情報３０１を条件式適合情報管理部２５に出力する（Ｓ２３）。そして、ステップＳ２４の処理に進む。
【００６８】
一方、対象カラム値が条件式２０１に適合しない場合（Ｓ２２：ＮＯ）、条件式判定部２２はステップＳ２４の処理に進む。
【００６９】
条件式判定部２２は、インデクス１００に未判定のレコード１０１が存在するか否かを判定する（Ｓ２４）。
【００７０】
未判定のレコード１０１が存在する場合（Ｓ２４：ＹＥＳ）、条件式判定部２２は、未判定のレコード１０１の１つを次の対象エントリ１０１として（Ｓ２５）、ステップＳ２１の処理に戻る。
【００７１】
一方、未判定のレコード１０１が存在しない場合（Ｓ２４：ＮＯ）、条件式判定部２２は、条件完了情報を条件式適合情報管理部２５に出力し（Ｓ２６）、条件式処理を終了する。
【００７２】
以上の処理により、インデクス１００から、条件式２０１に適合するレコードＩＤ値を含む条件式適合情報３０１が条件式適合情報管理部２５にバッファリングされる。
【００７３】
図１０は、論理式処理部２３の処理フローの一例を示す。
【００７４】
論理式処理部２３は、条件式適合情報管理部２５から条件式適合情報３０１を取得する（Ｓ３１）。なお、取得された条件式適合情報３０１は、条件式適合情報管理部２５から削除される。
【００７５】
論理式処理部２３は、取得した条件式適合情報３０１が条件完了情報であるか否かを判定する（Ｓ３２）。
【００７６】
情報３０１が条件完了情報である場合（Ｓ３２：ＹＥＳ）、論理式処理部２３は、完了判定処理を実行する（Ｓ３３）。完了判定処理については後述する。
【００７７】
一方、情報３０１が条件完了情報でない場合（Ｓ３２：ＮＯ）、論理式処理部２３は、条件式適合情報３０１から条件式ＩＤ２１１とレコードＩＤ値を抽出する（Ｓ３４）。
【００７８】
論理式処理部２３は、レコードＩＤ値が論理式判定テーブル２６の「レコードＩＤ」カラム４１０ａに存在するか否かを判定する（Ｓ３５）。
【００７９】
レコードＩＤ値が「レコードＩＤ」カラム４１０ａに存在しない場合（Ｓ３５：ＮＯ）、論理式処理部２３は、新規エントリ生成処理を実行する（Ｓ３６）。新規エントリ生成処理については後述する。
【００８０】
レコードＩＤ値が「レコードＩＤ」カラム４１０ａに存在する場合（Ｓ３５：ＹＥＳ）、論理式処理部２３は、そのレコードＩＤ値を有するレコード４０１において、「条件式ＩＤ」カラム４１０の値を「真」に変更する（Ｓ３７）。
【００８１】
論理式処理部２３は、各「条件式ＩＤ」カラムの値を論理式２０２に代入して論理演算し、その結果を「論理演算結果」カラム４１０ｅに登録する（Ｓ３８）。
【００８２】
論理演算結果が「偽」から「真」に変更になった場合（Ｓ３９：ＹＥＳ）、論理式処理部２３は、その論理演算結果が「真」のレコード４０１のレコードＩＤ値を含む論理式適合情報３０２を生成し、その情報３０２を論理式適合情報管理部２７に出力する（Ｓ４０）。そして、ステップＳ４１の処理に進む。
【００８３】
論理演算結果が「偽」のまま変化がない，もしくは「真」のまま変化がない場合（Ｓ３９：ＮＯ）、論理式処理部２３は、そのままステップＳ４１の処理に進む。
【００８４】
論理式処理部２３は、そのレコード４０１において、「条件式ＩＤ」カラムの値が全て「真」であるか否かを判定する（Ｓ４１）。
【００８５】
「条件式ＩＤ」カラムの値のいずれかが「真」でない場合（Ｓ４１：ＮＯ）、論理式処理部２３は、ステップＳ３１の処理に戻る。
【００８６】
「条件式ＩＤ」カラムの値が全て「真」である場合（Ｓ４１：ＹＥＳ）、論理式処理部２３は、そのままステップＳ４２の処理に進む。
【００８７】
論理式処理部２３は、そのレコード４０１を論理式判定テーブル２６から削除し（Ｓ４２）、ステップＳ３１の処理に戻る。
【００８８】
図１１は、論理式処理部２３における完了判定（図１０のＳ３３）の処理フローの一例を示す。
【００８９】
論理式処理部２３は、条件完了情報に含まれる条件式ＩＤ２１１に対応する完了フラグをオンにする（Ｓ５１）。なお、完了フラグは、条件完了情報を取得するまではオフになっている。
【００９０】
論理式処理部２３は、各条件式ＩＤ２１１に対応する完了フラグが全てオンとなったか否かを判定する（Ｓ５２）。すなわち、条件式２１１ごとに条件式処理部２３のプロセスが存在すると仮定したとき、論理式処理部２３は、全てのプロセスが処理を完了したか否かを判定する。
【００９１】
完了フラグのいずれかがオフである場合（Ｓ５２：ＮＯ）、論理式処理部２３は、図１０のステップＳ３１の処理に戻る。
【００９２】
一方、完了フラグが全てオンである場合（Ｓ５２：ＹＥＳ）、論理式処理部２３は、ステップＳ５３に進む。すなわち、論理式処理部２３は、全ての条件式適合情報３０１を論理式判定テーブル２６に反映したと判断し、論理式判定処理を終了する。
【００９３】
図１２は、論理式処理部２３における新規エントリ生成（図１０のＳ３６）の処理フローの一例を示す。
【００９４】
論理式処理部２３は、条件式適合情報管理部２５から取得したレコードＩＤ値が、記憶装置格納リスト（図示せず）に存在するか否かを判定する（Ｓ６１）。記憶装置格納リストには、これまで記憶装置２内のレコードＩＤリスト６０１に登録されたレコードＩＤ値が保持される。これにより、同一レコードＩＤ値を有する条件式適合情報３０１が、論理式判定テーブル２６と記憶装置２に分散されてしまうことを防ぐ。なお、記憶装置格納リストは、例えば、メモリ５に保持される。
【００９５】
レコードＩＤ値が記憶装置格納リストに存在しない場合（Ｓ６１：ＮＯ）、論理式処理部２３は、論理式判定テーブル２６に新規レコード４０１を生成可能であるか否かを判定する（Ｓ６２）。すなわち、論理式処理部２３は、論理式判定テーブル２６に現存するレコード数（以下「現存レコード数」という）がレコード最大数よりも小さいか否かを判定する。
【００９６】
新規レコード４０１を生成可能である場合（Ｓ６２：ＹＥＳ）、すなわち、現存レコード数がレコード最大数よりも小さい場合、論理式処理部２３は、取得したレコードＩＤ値を有する新規レコード４０１を生成し、論理式判定テーブル２６にエントリする（Ｓ６３）。その際、論理式処理部２３は、現存レコード数（カウント値）を１増やす。また、論理式処理部２３は、このときエントリされた新規レコード４０１の「条件ＩＤ」カラム４１０の値は全て「偽」とする。そして、論理式処理部２３は、図１０のステップＳ３７へ進む。
【００９７】
一方、取得したレコードＩＤ値が記憶装置格納リストに存在する場合（Ｓ６１：ＹＥＳ）、もしくは新規レコード４０１を生成不可能である場合（Ｓ６２：ＮＯ）、論理式処理部２３は、記憶装置２に条件適合情報３０１を保持させるべくステップＳ６４に進む。
【００９８】
論理式処理部２３は、抽出したレコードＩＤ値をレコードＩＤリストに登録する（Ｓ６４）。その際、論理式処理部２３は、そのレコードＩＤ値が未だ記憶装置格納リストに登録されていないレコードＩＤ値であれば、そのレコードＩＤ値を記憶装置格納リストに登録する。
【００９９】
そして、論理式処理部２３は、条件式適合情報３０１を記憶装置２に格納し（Ｓ６５）、図１０のステップＳ３１の処理に戻る。
【０１００】
以上の処理により、条件式処理部２２にて抽出された条件式適合情報３０１を論理式判定テーブル２６に反映させることができる。また、論理式判定テーブル２６に反映しきれない条件式適合情報３０１については、記憶装置２に格納することができる。
【０１０１】
図１３は、検索結果生成部２４の処理フローの一例を示す。
【０１０２】
検索結果生成部２４は、論理式適合情報管理部２７から、論理式適合情報３０２を取得する（Ｓ７１）。なお、取得した論理式適合情報３０２は論理式適合情報管理部２７から削除される。
【０１０３】
検索結果生成部２７は、取得した論理式適合情報３０２が論理完了情報であるか否かを判定する（Ｓ７２）。
【０１０４】
論理完了情報を取得していない場合（Ｓ７２：ＮＯ）、検索結果生成部２４は、論理式適合情報３０２からレコードＩＤ値を抽出する（Ｓ７３）。
【０１０５】
そして、検索結果生成部２７は、テーブルＴ１から、そのレコードＩＤ値を有するレコードを抽出し、検索結果テーブル５００に登録する（Ｓ７４）。そして、ステップＳ７１の処理に戻る。
【０１０６】
一方、論理完了情報を取得した場合（Ｓ７２：ＹＥＳ）、検索結果生成部２４は、論理式適合情報管理部２７にバッファリングされている論理式適合情報３０２についての処理は全て完了したと判断する。そして、検索結果生成部２４は、記憶装置に保持されている論理式適合情報３０２の処理に遷移すべくステップＳ７５に進む。
【０１０７】
検索結果生成部２４は、ソート処理部２８に対して、記憶装置１１に格納された条件式適合情報３０１の論理演算処理を要求する（Ｓ７５）。
【０１０８】
検索結果生成部２４は、記憶装置論理処理部２８から、論理式２０２に適合する論理式適合情報３０２のリストを取得する（Ｓ７６）。なお、この論理式適合情報３０２も上記と同様、論理式２０２に適合するレコードのレコードＩＤ値を含む。
【０１０９】
検索結果生成部２４は、論理式適合情報３０２から、レコードＩＤ値を抽出する（Ｓ７７）。
【０１１０】
検索結果生成部２７は、テーブルＴ１から、そのレコードＩＤ値を有するレコードを抽出し、検索結果テーブル５００に追加登録し（Ｓ７８）、検索結果生成処理を終了する。すなわち、ステップＳ７４によって生成された検索結果テーブル５００に、記憶装置論理処理部２８によって抽出されたレコードを追加登録する。
【０１１１】
以上の処理により、検索結果テーブル５００には、論理式処理部２３によって抽出されたレコードと、ソート処理部２８によって抽出されたレコードの両方を有する検索結果テーブル５００が生成される。すなわち、検索結果テーブル５００には、検索クエリ２００に適合するレコードを有する検索結果テーブル５００が生成される。
【０１１２】
なお、検索結果テーブル５００に登録されたレコードに対応するレコードは、論理式判定テーブル２６から削除される。この場合、ＤＢＭＳ１０（例えば論理式処理部２３又は検索結果生成部２７）は、論理式判定テーブル２６の現存レコード数（カウント値）を１減らす。
【０１１３】
以上、上述した実施形態によれば、レコードＩＤ値毎に、条件式２０１毎の真／偽が、論理式判定テーブル２６に登録される。そして、同一のレコードＩＤについて、複数の条件式２０１にそれぞれ対応する複数の真／偽と、論理式２０２とを基に、そのレコードＩＤが、検索クエリ２０１に適合するレコードのＩＤであるか否かが判断される。これにより、記憶装置２にアクセスすることによるソートが不要になるので、検索に要する時間を短縮することが期待できる。
【０１１４】
また、上述した実施形態によれば、論理式判定テーブル２６を構成するレコードの数が所定数に既に達している場合にのみ、レコードＩＤ値が、論理式判定テーブル２６に書かれず、記憶装置２に格納される。記憶装置２に格納されたレコードＩＤ値についてのみ、記憶装置２に対する入出力を必要とした検索処理が行われる。つまり、記憶装置２にアクセスすることによるソートを最小限にすることが期待できる。言い換えれば、本実施形態では、必ずしも、記憶装置２にアクセスすることによるソートを必要とした検索処理が行われるとは限られない。現存レコード数が所定数に達しても、論理式判定テーブル２６にレコードを追加する必要がなければ、レコードＩＤ値が記憶装置２に登録されない。
【０１１５】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態に限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【０１１６】
例えば、インデクス１００は無くても良い。その場合、条件式２０１に適合するか否かの判断に使用されるカラム値は、テーブルＴ１から取得されて良い。
【０１１７】
また、複数の条件式２０１にそれぞれ対応した複数のレコードＩＤリスト６０１は、１つにマージされていても良い。
【符号の説明】
【０１１８】
１… ＤＢ管理装置、２…記憶装置、５…メモリ、１０…ＤＢＭＳ、１１…ＤＢ、２１…検索クエリ解析部、２２…条件式処理部、２３…論理式処理部、２４…検索結果生成部、２５、条件式適合情報管理部、２６…論理式判定テーブル、２７…論理式適合情報管理部、２８…ソート処理部、１００…テーブル、２００…検索クエリ
【図１】
2012164738.tif 000003
【図２】
2012164738.tif 000004
【図３】
2012164738.tif 000005
【図４】
2012164738.tif 000006
【図５】
2012164738.tif 000007
【図６】
2012164738.tif 000008
【図７】
2012164738.tif 000009
【図８】
2012164738.tif 000010
【図９】
2012164738.tif 000011
【図１０】
2012164738.tif 000012
【図１１】
2012164738.tif 000013
【図１２】
2012164738.tif 000014
【図１３】
2012164738.tif 000015
【図１４】
2012164738.tif 000016
【国際調査報告】
2012164738.tif 000017
2012164738.tif 000018
2012164738.tif 000019
2012164738.tif 000020