(57)【特許請求の範囲】
【請求項１】
データ・マネジャとクエリ・マネジャとを備えるデータベース管理システムにおいて、フィルタリング基準としてＳＱＬ  ＤＩＳＴＩＮＣＴ文節を含む、データのセットに対するデータベース・クエリを処理するための方法であって、
データベース・クエリについてコンパイラが生成したアクセス計画をクエリ・マネジャが受け取る段階と、
クエリ・マネジャがデータ・マネジャを呼び出してデータのセット中のクエリ指定データにアクセスする段階と、
データ・マネジャがクエリ・マネジャに対するコールバックを実行する段階と、
クエリ・マネジャが、前記コールバックに応答して、クエリ指定のデータがフィルタリング基準を満たすかどうかをデータ・マネジャに示す段階と、
前記コールバックに対するクエリ・マネジャからの前記応答に基づいて、クエリ指定のデータがフィルタリング基準を満たした場合に、データ・マネジャがクエリ指定のデータをクエリ・マネジャのバッファにコピーする段階とを含む方法。
【請求項２】
前記データのセットがページ上に記憶され、
前記方法がさらに、
クエリ指定のデータが位置するページを、前記データにアクセスする前にデータ・マネジャが固定化する段階と、
クエリ・マネジャへのコールバック中に前記ページの固定化を維持する段階と
をさらに含む、請求項１に記載の方法。
【請求項３】
データベースに関するクエリを処理する方法を実行するためのプログラムを格納したコンピュータ可読のプログラム記憶装置であって、前記方法の各段階が請求項１または２記載の方法の各段階である、プログラム記憶装置。
【請求項４】
フィルタリング基準としてＳＱＬ  ＤＩＳＴＩＮＣＴ文節を含む、データのセットに対するデータベース・クエリを処理するための、データ・マネジャとクエリ・マネジャを備えるデータベース管理システム用のコンピュータ・プログラムであって、
前記データベース管理システムにおいて、
データベース・クエリについてコンパイラが生成したアクセス計画をクエリ・マネジャが受け取る機能と、
前記クエリ・マネジャに、前記データ・マネジャを呼び出してデータのセット中のクエリ指定のデータにアクセスさせる機能と、
前記データ・マネジャに、前記クエリ・マネジャに対するコールバックを実行させる機能と、
前記クエリ・マネジャに、前記コールバックに応答して、クエリ指定データがフィルタリング基準を満たすかどうかを前記データ・マネジャに示させる機能と、
コールバックに対する前記クエリ・マネジャからの応答に基づいて、クエリ指定のデータがフィルタリング基準を満たした場合に、前記データ・マネジャにクエリ指定データをクエリ・マネジャのバッファにコピーさせる機能と
を実現させるためのコンピュータ・プログラム。
【請求項５】
前記データのセットがページ上に記憶され、
前記データ・マネジャに、
クエリ指定データが位置するページを、前記データにアクセスする前に固定化させる機能と、
前記クエリ・マネジャへのコールバック中に、前記ページの固定化を維持させる機能と
を備える、請求項４に記載のコンピュータ・プログラム。
【請求項６】
フィルタリング基準としてＳＱＬ  ＤＩＳＴＩＮＣＴ文節を含む、データのセットに対するデータベース・クエリを処理するための、データ・マネジャとクエリ・マネジャを備えるクエリ処理システムであって、
前記クエリ・マネジャが、データベース・クエリについてコンパイラが生成したアクセス計画をクエリ・マネジャが受け取る手段を備え、
前記クエリ・マネジャが、前記データ・マネジャを呼び出して、データのセット中のクエリ指定データにアクセスする手段を備え、
前記データ・マネジャが、前記クエリ・マネジャへのコールバックを実行する手段を備え、
前記クエリ・マネジャが、前記コールバックに応答して、クエリ指定データがフィルタリング基準を満たすかどうかを前記データ・マネジャに示す手段を備え、
前記データ・マネジャが、前記コールバックに対する前記クエリ・マネジャからの応答に基づいて、クエリ指定のデータがフィルタリング基準を満たした場合に、前記クエリ指定データを前記クエリ・マネジャのバッファにコピーする手段を備えるクエリ処理システム。
【請求項７】
前記データのセットがページ上に記憶され、
前記データ・マネジャがさらに、
クエリ指定データが位置するページを、前記データにアクセスする前に固定化する手段と、
クエリ・マネジャへのコールバック中に前記ページの固定化を維持する手段と
を備える、請求項６に記載のクエリ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ・システムの改良、詳細には実行されるクエリがフィルタリング操作を含む改良型のデータベース・クエリ実行を対象とする。
【０００２】
【従来の技術】
リレーショナル・データベース管理システム（ＲＤＢＭＳ）ＤＢ２（商標）などのクエリ処理システムでは、記憶されているデータのイメージからデータ値が抽出され、クエリ評価システムによりさらに処理される。通常、データは列値からなる行として構築され、前記行はページとして知られる連続する記憶ブロックにグループ化されている。クエリ評価のタスクの一部は、フィルタリング、ソート、グループ化、結合などその後のクエリ評価段階のために、連続する行を分離するプロセスと、行の列の（おそらくは適切な）サブセットを抽出するプロセスを含む。
【０００３】
列値をページから抽出するプロセスは、必要とされる次の行を含むページをメイン・メモリ内で識別し見つける段階と、ページ内で必要な次の行を見つける段階と、必要とされる行内で必要とされる列値を見つける段階と、必要な列値をメモリ内の新しい位置にコピーし、そこで後続のクエリ評価段階のためにその列値を使用可能にする段階を含む。通常、ページをメモリ内で見つけるには、そのページがメイン・メモリ内にあるかどうかを判定することが必要であり、メモリ内にある場合はメモリ内のどこにそのページが位置するかを判定することが必要となる。ページがメイン・メモリ内にない場合、そのページを２次記憶装置から（通例はディスクから）メイン・メモリに持ってこなければならない。
【０００４】
さらに同時クエリ実行をサポートしているクエリ評価システムでは、そのページがメモリ内の同じ位置にとどまるようにし、ページを固定し、かつページ内容の論理的整合性を保つためにページへの同時の読み出しと更新を回避するよう措置を講じなければならない。必要とされる列データ値を新しい位置にコピーした後に、ページ固定化状態を解除しなければならない。
【０００５】
ページを見つけることによりデータにアクセスする段階、ページを固定化する段階、行をページ内で見つける段階、およびクエリ評価システムによって処理すべき行ごとに固定化を解除する段階は、クエリの実行コスト全体のかなりの部分を占めうる。
【０００６】
ＲＤＢＭＳなど従来技術のクエリ評価システムは、様々な手法を使用して、上記で述べたコストのかかる可能性が高い段階に従うことにより、ページ内の行に繰り返しアクセスすることを回避している。例えば、クエリ内に満たすべき述部がある場合、そのクエリについて対象となる列値のセットを検索する前に、見つけた行の述部を評価することが可能である。行が述部条件を満たさない場合は、ページの固定化を更新する必要なしに、次の行（おそらくはデータ内の同一ページ上にある）にアクセスすることができる。ページ内の現在の位置も知られており、それにより次の行の位置を見つけるコストが削減できることもある。
【０００７】
列値が依然として、その行が現在識別されているページ中にある状態にある間に、現在の行の列値に述部をこのように適用することは、探索引き数（ＳＡＲＧ）処理と呼ばれることがある。この処理法により、システムは、ページの固定化を解除し、メモリ内のページ位置を再識別し、ＳＡＲＧの述部が満たされない場合にそのページを再固定化することなく、同一ページの次の行へ進むことができるようになる。さらに、クエリ処理システムのページ処理とクエリ評価構成要素の間での制御の移転に関連するプログラムのブック・キーピングは、コピーされた列値を使用して述部を評価した後まもなく破棄される行については回避することができる。
【０００８】
データ・ページを固定化する必要を低減するための他の従来技術の手法は、現在の行の必要な列をデータ中のそのページから直接処理し、そのページの次の行へ直接進むものである。ページから列値を直接「消費（consume）」することのできる通常の処理操作には、ソート（列値をソート・データ構造に入力する）または集約（aggregation）（ＳＵＭ、ＡＶＧ、ＭＡＸなどの実行結果に列値を含める）が含まれる。このタイプの処理は、消費性（consuming）操作をデータ・アクセス処理に「プッシュダウン」するので、「コンシューミング・プッシュダウン」と呼ばれることがある。
【０００９】
しかしながら上記の手法は、評価すべき述部がある場合、またはクエリ実行の一部として実行される消費性操作がある場合にしか適用されない。ＲＤＢＭＳなどクエリ処理システムでは、実行にコストがかかる可能性があり、したがって上記の手法では不可能な他のタイプのクエリがある。そうしたクエリの例は、述部がなく非消費性操作を有するが、データ値をフィルタするクエリである。
【００１０】
【発明が解決しようとする課題】
したがって、クエリを実行するのに必要となるページ固定化の回数が低減されるようにフィルタリングを含むクエリを実行することができるクエリ・プロセッサが望ましい。
【００１１】
【課題を解決するための手段】
本発明の一態様によると、フィルタリング操作を含むデータベース・クエリの改良された実行が提供される。
【００１２】
本発明の別の態様によると、フィルタリング基準を含む、結果としてアクセス計画を生成するデータベース・クエリを、データ・マネジャ、データのセット、およびクエリ・マネジャを備えるデータベース管理システム内で処理する手法が提供され、この方法は、
クエリ・マネジャがデータ・マネジャを呼び出して、データのセット中のクエリ指定データにアクセスする段階と、
データ・マネジャがクエリ・マネジャに対するコールバックを実行する段階と、
クエリ・マネジャが、コールバックに応答して、クエリ指定のデータがフィルタリング基準を満たすかどうかをデータ・マネジャに示す段階と、
クエリ・マネジャからのコールバックへの応答に基づいて、データ・マネジャがクエリ指定のデータを戻す段階と
を含む。
【００１３】
本発明の別の態様によると、データのセットがページ上に記憶される上記の方法が提供され、この方法はさらに、クエリ指定データが位置するページを、そのデータにアクセスする前にデータ・マネジャが固定化する段階を含み、この方法はさらに、クエリ・マネジャへのコールバック中にページの固定化を維持する段階を含む。
【００１４】
本発明の別の態様によると、データベース・クエリがＳＱＬ DISTINCT句を含む上記方法が提供される。
【００１５】
本発明の別の態様によると、データベースのクエリを処理する方法段階を実行するための、機械により実行可能な命令のプログラムを有形に実施する、機械により可読なプログラム記憶装置が提供され、前記方法段階は段落番号［００１２］、［００１３］または［００１４］の方法段階を含む。
【００１６】
本発明の別の態様によると、フィルタリング基準を含む、結果としてアクセス計画を生成するデータベース・クエリを処理するための、データ・マネジャ、データのセット、およびクエリ・マネジャを備えるデータベース管理システム用のコンピュータ・プログラム製品が提供され、このコンピュータ・プログラム製品は、媒体で実施されるコンピュータ可読コード手段を有する、コンピュータが使用可能な媒体を備え、
クエリ・マネジャがデータ・マネジャを呼び出してデータ・セット中のクエリ指定データにアクセスするための、コンピュータ可読プログラム・コード手段と、
データ・マネジャがクエリ・マネジャにコールバックを実行するための、コンピュータ可読プログラム・コード手段と、
クエリ・マネジャが、コールバックに応答して、クエリ指定のデータがフィルタリング基準を満たすかどうかをデータ・マネジャに示すための、コンピュータ可読プログラム・コード手段と、
データ・マネジャが、コールバックへのクエリ・マネジャからの応答に基づいてクエリ指定のデータを戻すための、コンピュータ可読プログラム・コード手段と
を備える。
【００１７】
本発明の別の態様によると、上記のコンピュータ・プログラム製品が提供され、データのセットがページ上に記憶され、媒体で実施されるコンピュータ可読コード手段を有する、コンピュータが使用可能な媒体がさらに、
クエリ指定データが位置するページをそのデータにアクセスする前にデータ・マネジャが固定化するための、コンピュータ可読プログラム・コード手段と、
クエリ・マネジャへのコールバック中にページの固定化を維持するための、コンピュータ可読プログラム・コード手段とを備える。
【００１８】
本発明の別の態様によると、フィルタリング基準を含む、結果としてアクセス計画を生成するデータベース・クエリを処理するためのデータ・マネジャ、データのセット、およびクエリ・マネジャを備えるクエリ処理システムが提供され、
クエリ・マネジャが、データ・マネジャを呼び出して、データのセット中のクエリ指定データにアクセスする手段を備え、
データ・マネジャが、クエリ・マネジャへのコールバックを実行する手段を備え、
クエリ・マネジャが、コールバックに応答して、クエリ指定のデータがフィルタリング基準を満たすかどうかをデータ・マネジャに示す手段を備え、
データ・マネジャが、コールバックに対するクエリ・マネジャからの応答に基づいてクエリ指定のデータを戻す手段を備える。
【００１９】
本発明の別の態様によると、データのセットがページ上に記憶された上記のクエリ処理システムが提供され、データ・マネジャはさらに、クエリ指定データが位置するページをそのデータにアクセスする前に固定化する手段、およびクエリ・マネジャへのコールバック中にそのページの固定化を維持する手段とを備える。
【００２０】
本発明の別の態様によると、記憶データのセット中のページ内に位置するデータ・レコードにアクセスするためのデータ・マネジャを備え、そのデータ・マネジャが、データ・レコードが記憶されているページを、そのレコードにアクセスする前に固定化する、クエリ処理システムが提供され、このクエリ処理システムはまた、
データ・アクセス計画を処理するためのクエリ・プロセッサを備え、クエリ・プロセッサはデータ・マネジャを呼び出し、クエリ処理システムは、データ・マネジャに対し、処理中のクエリが指定されたフィルタリング演算子をどこに含むかを示し、
データ・マネジャが指定されたフィルタリング演算子の指示を受け取った場合、データ・マネジャは記憶データのセット中で次に位置するレコードを含む現在のデータ・ページを固定化し、データ・マネジャは現在のデータ・ページの固定化を解除する前に、指定されたフィルタリング演算子を次に位置するレコードに適用し、データ・マネジャは固定化された現在のデータ・ページ中で別のレコードのセットを見つけて、指定されたフィルタリング演算子と一致するレコードを見つける。
【００２１】
本発明の別の態様によると、上記のクエリ処理システムが提供され、このシステムにおいてデータ・マネジャは、クエリ・プロセッサを呼び出してフィルタリング操作を実行することにより、指定されたフィルタリング演算子を次に位置するレコードに適用する。
【００２２】
本発明の利点には、フィルタリング操作を含むデータベース・クエリを実行する際に効率が改良されることが含まれる。
【００２３】
【発明の実施の形態】
図１は、本発明の好ましい実施形態に従ってクエリを実行する際の諸段階を示す流れ図である。クエリ１０は、データベース内のデータにアクセスするために実行されるクエリを表す。コンパイラ１２はクエリ１０をコンパイルし、そのクエリについてのアクセス計画を生成する。クエリ・プロセッサ１４は、コンパイラ１２からアクセス計画を受け取る。必要に応じ、クエリ・プロセッサ１４はデータ管理システム（ＤＭＳすなわちデータ・マネジャ）１６を呼び出してデータ１８へのアクセスを得る。好ましい実施形態では、データのレコードまたは行はページ上のデータ１８内に記憶されている。データ管理システム１６は、列値をデータ１８から検索し、その値をクエリ・プロセッサ１４に戻す。処理はコンパイラ１２が作成したアクセス計画に従ってクエリ・プロセッサ１４によって実行され、データはデータ１８に適用されたクエリ１０に対応する結果２０として戻される。
【００２４】
データへの同時アクセスをサポートするクエリ処理システムでは、ページを含むデータの位置探索および固定化は、コストのかかる操作となる可能性がある。データ管理システム１６がデータ１８中のページを固定化し、（好ましい実施形態では概念的カーソルを使用して）データ１８中のそのページの位置を見つけるたびに、その結果生じる時間コストがクエリの処理に追加される。
【００２５】
クエリが、ＳＱＬ（構造化クエリ言語）で使用されるDISTINCT演算子によって実行されるものなどフィルタリング操作を含む場合、クエリ・プロセッサ１４によってフィルタされる行を検索するために、データ管理システム１６からデータ１８に対してかなりの呼び出しがありうる。上記で説明したように、ページがアクセスのたびに固定化され次いで解除されるデータ１８へのアクセスを繰り返すと、クエリ処理に回避できる可能性のある非効率性が導入される。
【００２６】
好ましい実施形態のシステムでは、読み出し中のデータ１８内のページの固定化をデータ管理システム１６が解除することなく、非述部のフィルタリング処理を実行することができる。したがって、現在識別されているページ中で固定化された見つかった行内において列値が「あるべき位置に」ある間に、現在の行の列値に対して非述部フィルタリングを直接実行することが可能になる。
【００２７】
好ましい実施形態のこの手法について、キーワードDISTINCTを含むクエリを処理する以下のプログラム記述言語（ＲＤＬ）を参照しながら説明する。この例は、まず好ましい実施形態の実行段階を使用しない実行を、次いでそれを使用した実行を示す例として提示する。例では、列「name」を有する表「employee」に対する下記のクエリを使用する。
SELECT DISTINCT name FROM employee；
【００２８】
下記のＰＤＬフラグメントでは、query_processorは図１のＲＤＢＭＳで示すクエリ・プロセッサ１４に対応し、data_managerはデータ管理システム１６に対応している。好ましい実施形態の段階を使用しないＲＤＢＭＳクエリ実行では、上記のクエリに対するアクセス計画の結果として下記が実行される。
１．data_managerが従業員表中の次のレコード（行）を含むページを固定化する。
２．data_managerが、data_managerによって見つけられた行からの氏名列を、query_processorバッファにコピーする（buffer thisRec）。
３．data_managerが、戻されたレコードを含むページのページ位置を解除する（unfix/unlatch）。
４．query_processorが追加の処理、この場合はFILTERを適用する。
ifまだレコードが見つからなければ、oldRecを初期化し、１つのレコードに対するquery_processorバッファ：oldRec＝thisRec
else if oldRec!＝thisRec，thenこれはdistinctなレコードであり、データをフローさせる（ユーザに戻す）。
else（oldRec＝thisRec）、これはnonDistinctなレコードであり、データをフローさせない。
query_processor第１段階にループバックし、data_managerに次のレコードを取り出させる。
【００２９】
上記の手法では、DISTINCTフィルタリング操作は、ページが解除され各行がdata_managerによってquery_processorに生成された後に行われる。
【００３０】
好ましい実施形態の手法を使用したクエリ例のクエリ処理の結果、下記のアクセス計画が実施される。
１．data_managerは、データ中のページ内の行位置にカーソルを置く（fix/latch）。
２．data_managerは、query_processorにコールバックして行をフィルタさせる（データ中のページ内の行位置に対するfix/latchは解除せずに）。
ifまだレコードが見つからなければ、oldRecを初期化し、１つのレコードに対するquery_processorバッファ；oldRec=thisRec（thisRecがdata_managerバッファである場合）、そのレコードが有資格であることをdata_managerに戻す。
else if oldRec!=thisRec、これはdistinctなレコードである。そのレコードが有資格であることをdata_managerに戻す。
else（oldRec==thisRec）、これはnonDistinctレコードである。そのレコードが有資格でないことをdata_managerに戻す。
３．ifレコードが有資格である（distinctであると判定された）場合、data_managerは氏名の列をdata_managerからquery_processorバッファにコピーし、data_managerはデータ中のページ内の行位置を解除し（固定解除／ラッチ解除）、段階４に進む。
４．query_processorは次の処理があればそれをquery_processorバッファに適用する。
５．query_processorは、ループバックしてdata_managerに次のレコードを取り出させる。
【００３１】
フィルタリング（DISTINCTキーワードによる）を含む単純ＳＱＬクエリに関する上記の説明は、好ましい実施形態の改善を例示するものである。データ・マネジャは、複数行にわたってデータページを固定化した状態に保つことができる、その際、DISTINCTキーワードによって指定されるフィルタリングの結果、行がクエリ処理においてスキップされる。
【００３２】
好ましい実施形態は、図１のデータ・マネジャ１６を繰り返し呼び出すことを必要とする処理と比較して、より優れたクエリ処理性能を提供する。これは、ＳＡＲＧおよびコンシューミング・プッシュダウン（上記で参照した）に類似する方式では、レコードをフィルタリングすることにより、ページ固定化を解除し、メモリ内のページの位置を再識別し、フィルタリング操作が満たされない場合にページを再固定化することなく、システムは同一ページ上の次の行に進むことができるからである。さらに、クエリ処理システムのページ処理構成要素とクエリ評価構成要素の間での制御の移転に関連するプログラムのブック・キーピングは、コピーされた列値を使用して述部を評価した後まもなく破棄される行については回避することができる。
【００３３】
好ましい実施形態のシステムでクエリ処理性能が高まる別の基礎は、好ましい実施形態が実施される中央演算処理装置（ＣＰＵ）のアーキテクチャにおける現在の技術状態に関係する。そのようなＣＰＵでは、参照の空間的および時間的な局在性によって資源利用度が高まる。ＣＰＵが、時間および空間の両方で他のデータまたは命令に近接しているデータまたは命令あるいはその両方を参照するとき、そのＣＰＵはより良い性能を達成することができる。現行の多くのＣＰＵでは、高速の（しかし比較的小型の）キャッシュがＣＰＵの近くまたはＣＰＵ上にある。このキャッシュは、新しいデータまたは命令位置が参照される際に満たされるようになっている。同一のデータまたは命令への後からの参照、またはキャッシュ内にキャッシュ方法の一部としてロードされた近似のデータまたは命令への後からの参照は、（高速）キャッシュから取り出される。ＣＰＵがキャッシュを使用してこの方式でアクセスを実行する場合、ＣＰＵは、キャッシュ内に常駐していない命令またはデータへのアクセスがある場合よりも迅速にデータおよび命令を処理することができる。
【００３４】
好ましい実施形態のシステムにより、あるページ内に含まれている行にわたってループ・プロセスを実行することが可能になる。このループ・プロセスは、命令およびデータの参照の空間的および時間的局所性を高めることによってＣＰＵの利用度を高め、したがってプロセッサ・メモリ・キャッシュ内に格納されている命令およびデータの使用をより効果的にする。
【００３５】
好ましい実施形態のシステムを使用したこのクエリの処理は、ＳＡＲＧ、コンシューミング・プッシュダウン、その他のフィルタリング・プッシュダウンなどクエリ評価のための他のプッシュダウン手法と併せて行うことができる。好ましい実施形態のフィルタリング・プッシュダウンは、データ・マネジャ１６によって見つけられ、他の述部評価または消費性操作をも受ける、定義されたフィルタを首尾よく通過する行の１つとして識別される行内のデータを、それがクエリ・プロセッサ１４に戻される前には除外しない。
【００３６】
ＳＱＬクエリ（図１のクエリ１０）がフィルタリング演算子（DISTINCTなど）を明示的には含まないが、コンパイラ１２が、最初に書いたままのクエリに対する論理的に等価なクエリとしてのフィルタリング演算子を含むアクセス計画を生成する場合に、好ましい実施形態のこのシステムによるフィルタリングを実行できることもこの説明から明らかになろう。例えばコンパイラ１２は、下記のクエリのアクセス計画においてDISTINCTを使用することができる。
SELECT name FROM employee GROUP BY name；
【００３７】
書き換えたクエリが上記に示す例である。このクエリは論理的には等価であるが、書き換えられたものが明確なフィルタリング演算子（この場合はDISTINCT）を含む場合は、好ましい実施形態の手法を利用することができる。
【００３８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３９】
（１）データ・マネジャとクエリ・マネジャを備えるデータベース管理システムにおいて、フィルタリング基準を含み、結果としてアクセス計画を生成する、データのセットに対するデータベース・クエリを処理するための方法であって、
ａ．クエリ・マネジャがデータ・マネジャを呼び出してデータのセット中のクエリ指定データにアクセスする段階と、
ｂ．データ・マネジャがクエリ・マネジャに対するコールバックを実行する段階と、
ｃ．クエリ・マネジャが、前記コールバックに応答して、クエリ指定のデータがフィルタリング基準を満たすかどうかをデータ・マネジャに示す段階と、
ｄ．前記コールバックに対するクエリ・マネジャからの前記応答に基づいて、データ・マネジャがクエリ指定のデータを戻す段階とを含む方法。
（２）データのセットがページ上に記憶され、前記方法がさらに、クエリ指定のデータが位置するページを、前記データにアクセスする前にデータ・マネジャが固定化する段階を含み、さらにクエリ・マネジャへのコールバック中に前記ページの固定化を維持する段階を含む、上記（１）に記載の方法。
（３）前記データベース・クエリがＳＱＬ DISTINCT文節を含む、上記（１）または（２）に記載の方法。
（４）機械で実行可能な命令のプログラムを有形に実施して、データベースに対するクエリを処理する方法段階を実行する機械可読のプログラム記憶装置であって、前記方法段階が上記（１）、（２）または（３）の方法段階を含むプログラム記憶装置。
（５）フィルタリング基準を含む、結果としてアクセス計画を生成するデータのセットに対するデータベース・クエリを処理するための、データ・マネジャとクエリ・マネジャを備えるデータベース管理システム用のコンピュータ・プログラム製品であって、媒体で実施されるコンピュータ可読コード手段を有する、コンピュータ使用可能な媒体を備え、
前記クエリ・マネジャが、前記データ・マネジャを呼び出してデータのセット中のクエリ指定のデータにアクセスするための、コンピュータ可読プログラム・コード手段と、
前記データ・マネジャが、前記クエリ・マネジャに対するコールバックを実行するための、コンピュータ可読プログラム・コード手段と、
前記クエリ・マネジャが、前記コールバックに応答して、クエリ指定データがフィルタリング基準を満たすかどうかを前記データ・マネジャに示すための、コンピュータ可読プログラム・コード手段と、
コールバックに対する前記クエリ・マネジャからの応答に基づいて、前記データ・マネジャがクエリ指定データを戻すための、コンピュータ可読プログラム・コード手段とを備えるコンピュータ・プログラム製品。
（６）データのセットがページ上に記憶され、媒体で実施されるコンピュータ可読コード手段を有するコンピュータ使用可能な媒体がさらに、
前記データ・マネジャが、クエリ指定データが位置するページを、前記データにアクセスする前に固定化するための、コンピュータ可読プログラム・コード手段と、
前記クエリ・マネジャへのコールバック中に、前記ページの固定化を維持するための、コンピュータ可読プログラム・コード手段とを備える、上記（５）に記載のコンピュータ・プログラム製品。
（７）フィルタリング基準を含む、結果としてアクセス計画を生成する、データのセットに対するデータベース・クエリを処理するための、データ・マネジャとクエリ・マネジャを備えるクエリ処理システムであって、
前記クエリ・マネジャが、前記データ・マネジャを呼び出して、データのセット中のクエリ指定データにアクセスする手段を備え、
前記データ・マネジャが、前記クエリ・マネジャへのコールバックを実行する手段を備え、
前記クエリ・マネジャが、前記コールバックに応答して、クエリ指定データがフィルタリング基準を満たすかどうかを前記データ・マネジャに示す手段を備え、
前記データ・マネジャが、前記コールバックに対する前記クエリ・マネジャからの応答に基づいてクエリ指定データを戻す手段を備えるクエリ処理システム。
（８）データ・マネジャがさらに、データのセットがページ上に記憶され、クエリ指定データが位置するページを、前記データにアクセスする前に固定化する手段と、クエリ・マネジャへのコールバック中に前記ページの固定化を維持する手段を備える、上記（７）に記載のクエリ処理システム。
（９）記憶データのセット中のページ内に位置するデータ・レコードにアクセスするためのデータ・マネジャを備え、前記データ・マネジャが、レコードにアクセスする前にデータ・レコードが記憶されているページを固定化する、クエリ処理システムであって、
データ・アクセス計画を処理するためのクエリ・プロセッサであって、前記データ・マネジャおよび前記クエリ処理システムを呼び出して、前記データ・マネジャに、処理中のクエリが指定されたフィルタ演算子をどこに含むかを示すクエリ・プロセッサをさらに備え、
データ・マネジャが指定されたフィルタリング演算子の指示を受け取った場合、前記データ・マネジャが、記憶データのセット中で次に位置するレコードを含む現在のデータ・ページを固定化し、前記データ・マネジャが、現在のデータ・ページの固定化を解除する前に、指定されたフィルタリング演算子を次に位置するレコードに適用し、前記データ・マネジャが、指定されたフィルタリング演算子と一致するレコードの１つを見つけるために、固定された現在のデータ・ページ中に別のレコードのセットを見つけるクエリ処理システム。
（１０）クエリ・プロセッサを呼び出してフィルタリング操作を実行することにより、データ・マネジャが、指定されたフィルタリング演算子を次に位置するレコードに適用する、上記（９）に記載のクエリ処理システム。
【図面の簡単な説明】
【図１】本発明の好ましい実施形態を使用したクエリ解釈の諸段階を図示する流れ図である。
【符号の説明】
１０  クエリ
１２  コンパイラ
１４  クエリ・プロセッサ
１６  データ・マネジャ（ＤＭＳ）
１８  データ
２０  結果
【図１】
0004106198.tif 000002