(57)【要約】【課題】最適なインデックスを指定することができる情報処理システム、アクセスパス決定方法及びアクセスパス決定プログラムを提供すること【解決手段】本発明にかかる情報処理システム１は、データベース言語によって記述され、ＤＢ９４から任意の情報を抽出する命令文８０の入力に応じてアクセスパスを決定する。また、複数の条件情報と、複数の条件情報のそれぞれに関連付けられ、命令文８０を実行するときに使用するインデックスを示すインデックス情報を格納するインデックス情報記憶部９３と、命令文８０において指定されている条件を抽出する解析部９０と、抽出した条件に基づいて、インデックス情報記憶部９３に格納される情報から命令文８０を実行するときに使用するインデックスを選択するインデックス指定部９２と、選択したインデックスを使用するように、命令文８０を実行するときのアクセスパスを決定する最適化部９１を備える。【選択図】図１
2010231332.tif 000002
【特許請求の範囲】
【請求項１】
データベース言語によって記述され、データベースから任意の情報を抽出する命令文の入力に応じてアクセスパスを決定する情報処理システムであって、
複数の条件情報と、前記複数の条件情報のそれぞれに関連付けられ、前記命令文を実行するときに使用するインデックスを示すインデックス情報とを格納するインデックス情報記憶部と、
前記命令文において指定されている条件を抽出する解析部と、
前記解析部が抽出した条件に基づいて、前記インデックス情報記憶部に格納される情報から前記命令文を実行するときに使用するインデックスを選択するインデックス指定部と、
前記インデックス指定部が選択したインデックスを使用するように、前記命令文を実行するときのアクセスパスを決定する最適化部とを備えた情報処理システム。
【請求項２】
前記解析部は、前記命令文が同じ意味を有する場合には、異なる記述方法であっても同一の条件として抽出する請求項１に記載の情報処理システム。
【請求項３】
前記条件情報は、前記条件を記述した文字列であり、
前記解析部は、前記同一の条件として、前記条件を記述した同一の文字列を生成する請求項２に記載の情報処理システム。
【請求項４】
前記情報処理システムは、さらに利用者からの入力に応じて、前記インデックス情報記憶部に格納される情報を更新する入力処理部を備えた請求項１乃至３のいずれかに記載の情報処理システム。
【請求項５】
前記データベース言語は、ＳＱＬであり、
前記命令文は、ＳＱＬ文である請求項１乃至４のいずれかに記載の情報処理システム。
【請求項６】
データベース言語によって記述された命令文に基づいて、アクセスパスを決定するアクセスパス決定方法であって、
前記命令文において指定されている条件を抽出するステップと、
複数の条件情報と、前記複数の条件情報のそれぞれに関連付けられ、前記命令文を実行するときに使用するインデックスを示すインデックス情報とを格納するインデックス情報記憶部を参照して、前記抽出した条件に基づいて、前記命令文を実行するときに使用するインデックスを選択するステップと、
前記選択したインデックスを使用するように、前記命令文を実行するときのアクセスパスを決定するステップとを備えたアクセスパス決定方法。
【請求項７】
前記条件を抽出するステップは、前記命令文が同じ意味を有する場合には、異なる記述方法であっても同一の条件として抽出する請求項６に記載のアクセスパス決定方法。
【請求項８】
データベース言語によって記述された命令文に基づいて、アクセスパスを決定するアクセスパス決定プログラムであって、
前記命令文において指定されている条件を抽出するステップと、
複数の条件情報と、前記複数の条件情報のそれぞれに関連付けられ、前記命令文を実行するときに使用するインデックスを示すインデックス情報とを格納するインデックス情報記憶部を参照して、前記抽出した条件に基づいて、前記命令文を実行するときに使用するインデックスを選択するステップと、
前記選択したインデックスを使用するように、前記命令文を実行するときのアクセスパスを決定するステップとをコンピュータに実行させるアクセスパス決定プログラム。
【請求項９】
前記条件を抽出するステップは、前記命令文が同じ意味を有する場合には、異なる記述方法であっても同一の条件として抽出する請求項８に記載のアクセスパス決定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、アクセスパス決定方法及びアクセスパス決定プログラムに関する。
【背景技術】
【０００２】
データベースからＳＱＬ(Structured Query Language)によって任意の条件のデータを抽出する場合、オプティマイザが使用するインデックスを自動的に選択し、そのインデックスを使用してアクセスパスを決定している。しかし、必ずしも最適なインデックスが選択されるとは限らないという問題がある。
【０００３】
このような問題を解決するための方法として、アプリケーションプログラム(以下、「ＡＰとする」)の埋め込みＳＱＬ文において任意のインデックスを指定するヒント句を記述することにより、インデックスを指定する方法がある。この方法では、利用者が最適なインデックスを指定することができる。しかし、データベースの内容の変更によって最適なインデックスが変わってしまった場合、最適なインデックスを指定し直すためには、ＡＰの修正が必要となるため、適用が難しいという問題があった。
【０００４】
また、上述のような問題を解決するための他の方法として、利用者がＳＱＬ文を記述するときに、最適なインデックスをヒント句によって指定する方法がある。しかし、ヒント句の記述方法の違いにより、意図するインデックスが使用されない場合がある。これは、利用者が入力したヒント句の文字列と、オプティマイザが認識しているヒント句の文字列が完全に一致していなければいけないからである。
【０００５】
なお、特許文献１には、ファクト表とディメンジョン表から構成されるスタースキーマのデータベースにおいて、ジョイン処理を効率よく実行する技術が開示されている。具体的には、問い合わせ処理時に、ディメンジョン表およびファクト表上の既存のインデックスを組み合わせて定義した仮想連結インデックスが示す複数のインデックスを順次アクセスしてその問い合わせの条件に合致するファクト表のレコードを特定している。
しかし、特許文献１は、問い合わせに対応する仮想連結インデックスをどのように特定するかについては記載されていない。つまり、特許文献１では、問い合わせの内容に基づいて、アクセスパスにおいて使用する最適なインデックスを指定する技術を開示したものではない。
【０００６】
また、特許文献２には、ブロック構造文でない場合は、インタプリト又は１ラインコンパイル単位に処理実行し、ブロック構造文の場合は、そのブロック構造文の種類等に応じてプログラム言語処理を行うことにより、ブロック構造文をインタプリト又は１ラインコンパイルするプログラミング言語でも、高速処理が可能となる技術が開示されている。
しかし、特許文献２は、データベースに関する技術を開示したものではない。
【０００７】
さらに、特許文献３には、データベースのためのインデックスのセットをデータベースに与えられたＳＱＬステートメントのサンプルを解析することによって指定し、最適なインデックスが提供されなかった場合に、照会によって中央処理装置に過剰な要求が課せられてしまうという問題を克服するための試みが開示されている。
しかし、特許文献３は、インデックスのセットを指定するのみであり、アクセスパスにおいて使用する最適なインデックスを指定する技術を開示したものではない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１１０２１９号公報
【特許文献２】特開平０５−１５０９９９号公報
【特許文献３】特表２０００−５０２２０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以上に説明したように、データベースからＳＱＬによって任意の条件のデータを抽出する場合、必ずしも最適なインデックスが指定されるとは限らないという問題がある。
【００１０】
本発明の目的は、上述のような問題を解決するためになされたものであり、最適なインデックスを指定することができる情報処理システム、アクセスパス決定方法及びアクセスパス決定プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明にかかる情報処理システムは、データベース言語によって記述され、データベースから任意の情報を抽出する命令文の入力に応じてアクセスパスを決定する情報処理システムであって、複数の条件情報と、前記複数の条件情報のそれぞれに関連付けられ、前記命令文を実行するときに使用するインデックスを示すインデックス情報とを格納するインデックス情報記憶部と、前記命令文において指定されている条件を抽出する解析部と、前記解析部が抽出した条件に基づいて、前記インデックス情報記憶部に格納される情報から前記命令文を実行するときに使用するインデックスを選択するインデックス指定部と、  前記インデックス指定部が選択したインデックスを使用するように、前記命令文を実行するときのアクセスパスを決定する最適化部とを備えたものである。
【００１２】
本発明にかかるアクセスパス決定方法は、データベース言語によって記述された命令文に基づいて、アクセスパスを決定するアクセスパス決定方法であって、前記命令文において指定されている条件を抽出するステップと、複数の条件情報と、前記複数の条件情報のそれぞれに関連付けられ、前記命令文を実行するときに使用するインデックスを示すインデックス情報とを格納するインデックス情報記憶部を参照して、前記抽出した条件に基づいて、前記命令文を実行するときに使用するインデックスを選択するステップと、前記選択したインデックスを使用するように、前記命令文を実行するときのアクセスパスを決定するステップとを備えたものである。
【００１３】
本発明にかかるアクセスパス決定プログラムは、データベース言語によって記述された命令文に基づいて、アクセスパスを決定するアクセスパス決定プログラムであって、前記命令文において指定されている条件を抽出するステップと、複数の条件情報と、前記複数の条件情報のそれぞれに関連付けられ、前記命令文を実行するときに使用するインデックスを示すインデックス情報とを格納するインデックス情報記憶部を参照して、前記抽出した条件に基づいて、前記命令文を実行するときに使用するインデックスを選択するステップと、前記選択したインデックスを使用するように、前記命令文を実行するときのアクセスパスを決定するステップとをコンピュータに実行させるものである。
【発明の効果】
【００１４】
本発明により、最適なインデックスを指定することができる情報処理システム、アクセスパス決定方法及びアクセスパス決定プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１にかかる情報処理システムの概要を示すブロック図である。
【図２】本発明の実施の形態１にかかる情報処理システムを示すブロック図である。
【図３】本発明の実施の形態１にかかるＤＢに格納されるテーブルの一例を示す図である。
【図４】本発明の実施の形態１にかかる情報処理システムの処理概要を示す図である。
【図５】本発明の実施の形態１にかかる情報処理システムの処理概要を示す図である。
【図６】本発明の実施の形態２にかかる情報処理システムの処理概要を示す図である。
【図７】本発明の実施の形態３にかかるＤＢに格納されるテーブルの一例を示す図である。
【図８】本発明の実施の形態３にかかる情報処理システムの処理概要を示す図である。
【図９】本発明の実施の形態３にかかる情報処理システムの処理概要を示す図である。
【図１０】本発明の実施の形態４にかかる情報処理システムの処理概要を示す図である。
【図１１】本発明の実施の形態４にかかる情報処理システムの処理概要を示す図である。
【図１２】本発明の実施の形態５にかかる情報処理システムの処理概要を示す図である。
【図１３】本発明の実施の形態５にかかる情報処理システムの処理概要を示す図である。
【発明を実施するための形態】
【００１６】
本発明の実施の形態１．
まず、図１を参照して、本発明の実施の形態１にかかる情報処理システムの概要について説明する。図１は、本発明の実施の形態１にかかる情報処理システムの概要を示すブロック図である。
【００１７】
情報処理システム１は、解析部９０、最適化部９１、インデックス指定部９２、インデックス情報記憶部９３及びデータベース(以下、「ＤＢ」とする)９４を備える。
解析部９０は、データベース言語によって記述された命令文において指定されている条件を抽出する。
最適化部９１は、インデックス指定部９２が選択したインデックスを使用するように、命令文を実行するときのアクセスパスを決定する。
インデックス指定部９２は、解析部９０が抽出した条件に基づいて、インデックス記憶部９３に格納される情報から命令文を実行するときに使用するインデックスを選択する。
インデックス情報記憶部９３は、命令文において指定される条件を示す複数の条件情報と、これら複数の条件情報のそれぞれに関連付けられ、命令文を実行するときに使用するインデックスを示すインデックス情報とを格納する。
ＤＢ９４は、任意のデータを格納する。
【００１８】
続いて、発明の実施の形態１にかかる情報処理システムの処理の概要について説明する。
まず、解析部９０は、ＤＢ９４から任意の情報を抽出する命令文８０の入力を受けると、入力された命令文８０において指定されている条件を抽出する。そして、解析部９０は、抽出した条件を示す条件情報をインデックス指定部９２に出力する。
次に、インデックス指定部９２は、解析部９０から出力された条件情報を取得し、取得した条件情報が示す条件に基づいて、インデックス記憶部９３に格納される情報から命令文８０を実行するときに使用するインデックスを選択する。そして、インデックス指定部９２は、選択したインデックスを示すインデックス情報を最適化部９１に出力する。
次に、最適化部９１は、インデックス指定部９２から出力されたインデックス情報を取得し、取得したインデックス情報が示すインデックスを使用するように、命令文８０を実行するときのアクセスパスを決定する。
【００１９】
続いて、図２を参照して、本発明の実施の形態１にかかる情報処理システムについて説明する。図２は、本発明の実施の形態１にかかる情報処理システムを示すブロック図である。
【００２０】
情報処理システム１は、データベース管理システム(以下、「ＤＢＭＳ」とする)１０、ＤＢ２０、条件取得部２０、インデックス指定部２１、インデックス情報参照部２１、インデックス情報更新部２２及びインデックス情報記憶部４０を備える。また、データベース管理システム１０は、構文解析部１１、意味解析部１２、最適化部１３、オブジェクト生成部１４及び実行処理部１５を含む。また、バッチアプリケーションプログラム(以下、「バッチＡＰ」とする)２又はオンライントランザクション処理システム(以下、「ＯＬＴＰシステム」とする)３は、ＤＢ２０から任意の情報を抽出するＳＱＬ文５０をデータベース管理システム１０に送信する。情報処理システム１は、例えば、ＰＣ(Personal Computer)やサーバ等の情報処理装置から構成される。
【００２１】
構文解析部１１は、受信したＳＱＬ文５０の構文を解析する。このとき、構文解析部１１は、ＳＱＬ文５０を意味のある要素単位に構文を分解する。
意味解析部１２は、構文解析部１１で分解されたＳＱＬ文５０の意味を解析する。また、意味解析部１２は、ＳＱＬ文５０において条件が指定されている場合は、指定されている条件を示す条件情報を条件取得部２０に出力する。構文解析部１１及び意味解析部１２は、解析部として機能する。
最適化部１３は、ＳＱＬ文５０を実行するためのアクセスパスを決定する。なお、最適化部１３は、インデックス指定部２１からインデックス示すインデックス情報を取得した場合は、取得した情報を使用するように、アクセスパスを決定する。
オブジェクト生成部１４は、最適化部１３において決定したアクセスパスを実行するためのオブジェクトを生成する。
実行処理部１５は、オブジェクト生成部１４で生成したオブジェクトを実行することによって、ＳＱＬ文５０を実行する。
【００２２】
条件取得部２０は、意味解析部１２からＳＱＬ文５０において指定されている条件情報を取得する。また、条件取得部２１は、取得した条件情報をインデックス指定部２１に出力する。
インデックス指定部２１は、条件取得部２０から出力された条件情報を取得し、取得した条件情報に基づいて、インデックス情報記憶部３０に格納される情報からＳＱＬ文５０を実行するときに使用するインデックスを選択する。そして、インデックス指定部２１は、選択したインデックスを示すインデックス情報を最適化部１３に出力する。
インデックス情報更新部２２は、利用者からインデックス情報記憶部３０に対するインデックス情報更新指示６０の入力を受けた場合に、この入力に応じてインデックス記憶部３０に格納される情報の追加、変更または削除等の更新を行う。
【００２３】
インデックス情報記憶部３０は、複数の条件情報と、これらの条件情報のそれぞれにインデックス情報を対応付けたインデックス指定テーブルを格納する。ここで、インデックス情報記憶部３０は、条件情報と、その条件情報が示す条件が指定されたＳＱＬ文を実行する場合に、最適となるインデックスを示すインデックス情報とを予め対応付けて格納している。
ＤＢ４０は、任意のデータを格納する。インデックス情報記憶部３０又はＤＢ４０は、例えば、メモリやＨＤＤ(Hard Disc Drive)等の記憶装置から構成される。
【００２４】
なお、条件情報については、ＳＱＬ文５０において指定される条件を示す情報であればどのような情報であってもよいが、本実施の形態においては、条件情報をその条件を示す文字列とした例について説明する。また、インデックス情報についても、同様にインデックスを示す情報であればどのような情報であってもよいが、本実施の形態においては、インデックス情報をそのインデックス名を示す文字列とした例について説明する。
【００２５】
続いて、図３〜５を参照して、本発明の実施の形態１にかかる情報処理システムの処理について説明する。図４〜５は、本発明の実施の形態１にかかる情報処理システムの処理概要を示す図である。
なお、ここでは、図３に例示するＤＢ４０に格納されるテーブル４１から、ＳＱＬ文５０によって情報を抽出する場合を例として説明する。テーブル４１は、テーブル名が"Ｔ１"であり、"Ｃ１"、"Ｃ２"及び"Ｃ３"が列名となる。
【００２６】
まず、バッチＡＰ３又はＯＬＴＰシステム３は、ＤＢ４０から任意の情報を抽出する場合に、ＳＱＬ文５０をＤＢＭＳ１０に送信する。
ＤＢＭＳ１０がＳＱＬ文５０を受信すると、構文解析部１１は、受信したＳＱＬ文５０を取得し(Ｓ１００)、取得したＳＱＬ文５０を解析する(Ｓ１０１)。具体的には、図４に示すように、ＳＱＬ文５０においてＷＨＥＲＥ句以下の構文を個々の要素に分解する。
そして、構文解析部１１は、ＷＨＥＲＥ句以下の構文を個々の要素に分解した情報を構文解析結果として意味解析部１２に出力する。
【００２７】
次に、意味解析部１２は、構文解析部１１から出力された構文解析結果を取得し(Ｓ１０２)、取得した構文解析結果の意味を解析する(Ｓ１０３)。意味解析部１２は、解析によって、構文解析結果からＷＨＥＲＥ句において条件となる要素である"Ｃ１＝'ＡＡＡ'"と"Ｃ２＝'ＢＢＢ'"を特定し、さらに特定した条件をテーブル名も含めた条件"Ｔ１.Ｃ１＝'ＡＡＡ'"と"Ｔ１.Ｃ２＝'ＢＢＢ'"に変換する。テーブル名は、例えば、解析のときに、ＳＱＬ文５０を参照することにより特定する。
なお、分解や解析は、どのような手法によって行ってもよく、例えば、構文解析部１１に"ＷＨＥＲＥ"、"ＡＮＤ"や"＝"等の個々の要素を識別することができる文字列情報を備えておき、それにより判断するなどしてもよい。
そして、意味解析部１２は、条件"Ｔ１.Ｃ１＝'ＡＡＡ'"と"Ｔ１.Ｃ２＝'ＢＢＢ'"の文字列情報を条件情報として、条件取得部２０に出力する。
【００２８】
次に、条件取得部２０は、意味解析部１２から出力された条件情報を取得する(Ｓ１０４)。そして、条件取得部２０は、取得した条件情報をインデックス指定部に出力する。
【００２９】
次に、インデックス指定部２１は、条件取得部２０から出力された条件情報を取得する(Ｓ１０５)。インデックス指定部２１は、インデックス指定テーブルを参照し、取得した条件情報が示す条件に対応する最適なインデックスを検索する(Ｓ１０６)。ここで、条件が"Ｔ１.Ｃ１＝'ＡＡＡ'"と"Ｔ１.Ｃ２＝'ＢＢＢ'"であるため、それに対応する最適なインデックスは"I３"となる(Ｓ１０７)。インデックス指定部２１は、インデックス指定テーブルから最適なインデックスとして、インデックス名の文字列情報"I３"をインデックス情報として取得する(Ｓ１０８)。
そして、インデックス指定部２１は、取得したインデックス情報を最適化部１３に出力する。
【００３０】
なお、ここでの判断は、インデックス指定部２１が取得した条件情報と、インデックス指定テーブルの条件情報との文字列の一致により行うことができる。また、インデックス指定部２１が取得する条件情報にＳＱＬ文に含まれる"ＡＮＤ"、"ＯＲ"、"ＮＯＴ"等の論理演算子の情報も含めて、この情報の一致も判断してインデックス指定テーブルからインデックス情報を取得するようにしてもよい。
【００３１】
次に、最適化部１３は、インデックス指定部２１から出力されたインデックス情報を取得する(Ｓ１０９)。そして、取得したインデックス情報が示すインデックス"I３"を使用するようにして、アクセスパスを決定する。
次に、オブジェクト生成部１４は、最適化部１３が決定したアクセスパスを実行するオブジェクトを生成する。
そして、実行処理部１５は、オブジェクト生成部１４が生成したオブジェクトを実行する。これにより、ＤＢ４０に対してＳＱＬ文５０が実行される。
【００３２】
なお、本実施の形態１にかかる情報処理システム１には、マウスやキーボード等の任意の入力装置(図示せず)によって、利用者がインデックス情報更新指示６０を入力することにより、インデックス情報記憶部３０に格納される情報の追加、変更または削除等の更新を行うことができる。
例えば、インデックス情報更新部２２は、任意の条件情報とインデックス情報を含んだインデックス情報更新指示６０を受けると、インデックス情報記憶部３０のインデックス指定テーブルに、任意の条件情報とインデックス情報を追加する。また、例えば、インデックス情報更新部２２は、インデックス指定テーブルにおける任意の"Ｎｏ"を指定したインデックス情報更新指示６０を受けると、インデックス指定テーブルに含まれ任意の情報を削除し、任意の"Ｎｏ"、インデックス情報を含んだインデックス情報更新指示６０をうけると、任意の"Ｎｏ"に対応するインデックス情報を更新する等を行う。
【００３３】
以上に説明したように、本実施の形態１では、実行するＳＱＬ文において指定されている条件に対応した最適なインデックスをインデックス指定テーブルから選択しているため、最適なインデックスを指定することが可能となる。
また、バッチＡＰのようなＡＰにおける埋め込みＳＱＬ文においてヒント情報を記述するのではなく、情報の更新が可能なインデックス指定テーブルを参照することにより、インデックスを選択しているため、ＡＰの修正をすることがなく、又は、ＡＰの修正が不可能な場合であっても、最適なインデックスを指定することが可能となる。
【００３４】
本発明の実施の形態２．
続いて、本発明の実施の形態２にかかる情報処理システムについて説明する。
なお、本発明の実施の形態２にかかる情報処理システムの構成は、図２に示す実施の形態１と同様であるため、説明を省略する。
【００３５】
図３、６を参照して、本発明の実施の形態２にかかる情報処理システムの処理について説明する。図６は、本発明の実施の形態２にかかる情報処理システムの処理概要を示す図である。なお、ここでは、実施の形態１と同様の図３に例示するＤＢ４０に格納されるテーブル４１から、ＳＱＬ文５０、５１、５２によって情報を取得する場合を例として説明する。
【００３６】
図６に示すＳＱＬ文５０、５１、５２は、それぞれのＳＱＬ文の意味は一致している。つまり、ＳＱＬ文５０、５１、５２は、条件は一致しているが、それぞれの記述方法が異なっている。
構文解析部１１は、ＳＱＬ文５０、５１、５２のいずれかを取得すると(Ｓ２００)、取得したＳＱＬ文５０、５１、５２の解析を行う(Ｓ２０１)。ここで、ＳＱＬ文５０、５１、５２の記述方法に異なっている場合であっても、構文解析部１１は、図６に示すように、同じ構文解析結果を生成する。なお、これ以降の処理は、本実施の形態１と同様となるため、説明を省略する。
このように、本実施の形態２では、構文を解析するときに、条件となる要素として、記述方法の違いによって差異がでない表現によって文字列を抽出しているため、記述方法が異なっていても同一の条件を条件情報として抽出することができる。言い換えると、ＳＱＬ文が同じ意味を有する場合には、異なる記述方法であっても同一の条件を抽出することができる。
【００３７】
以上に説明したように、本実施の形態２では、ＳＱＬ文の文字列の一致ではなく、ＳＱＬ文の意味単位で対応するインデックスを決定しているため、ＳＱＬ文の記述方法の違いに依存せず、最適なインデックスを指定することが可能となる。
【００３８】
本発明の実施の形態３．
続いて、本発明の実施の形態３にかかる情報処理システムについて説明する。
なお、本発明の実施の形態３にかかる情報処理システムの構成は、図２に示す実施の形態１と同様であるため、説明を省略する。
【００３９】
図３、７〜９を参照して、本発明の実施の形態３にかかる情報処理システムの処理について説明する。図８、９は、本発明の実施の形態３にかかる情報処理システムの処理概要を示す図である。なお、ここでは、実施の形態１と同様の図３に例示するＤＢ４０に格納されるテーブル４１と、新たに図７に例示するＤＢ４０に格納されるテーブル４２から、ＳＱＬ文５３によって情報を抽出する場合を例として説明する。テーブル４２は、テーブル名が"Ｔ２"であり、"Ｃ４"、"Ｃ５"及び"Ｃ６"が列名となる。なお、実施の形態１と同様の処理については説明を省略する。
【００４０】
構文解析部１１は、ＳＱＬ文５３を取得すると(Ｓ３００)、図８に示すように、ＳＱＬ文５３において条件が指定されるＯＮ句以下の構文を個々の要素に分解する(Ｓ３０１)。
次に、意味解析部１２は、構文解析部１１から構文解析結果を取得すると(Ｓ３０２)、ＪＯＩＮ句において条件となる要素である"Ｃ１＝Ｃ４"を特定し、さらに特定した条件をテーブル名も含めた条件"Ｔ１.Ｃ１＝Ｔ２．Ｃ４"に変換する。
そして、意味解析部１２は、条件"Ｔ１.Ｃ１＝Ｔ２．Ｃ４"の文字列情報を条件情報として、条件取得部２０に出力する。
【００４１】
次に、インデックス指定部２１は、条件取得部２０を介して、条件情報を取得すると(Ｓ３０５)、インデックス指定テーブルから条件"Ｔ１.Ｃ１＝Ｔ２．Ｃ４"に対応する最適なインデックス情報"Ｉ１"を取得する(Ｓ３０６、Ｓ３０７、Ｓ３０８)。
そして、最適化部１３は、インデックス指定部２１からインデックス情報を取得すると(Ｓ３０９)、取得したインデックス情報が示すインデックス"Ｉ１"を使用するようにして、アクセスパスを決定する。なお、これ以降の処理は、実施の形態１と同様となるため、説明を省略する。
【００４２】
以上に説明したように、本実施の形態３では、ＪＯＩＮ句が記述されたＳＱＬ文によって結合して情報を抽出する場合であっても、実施の形態１と同様に、最適なインデックスを指定することが可能である。また、ＡＰの修正をすることがなく、又は、ＡＰの修正が不可能な場合であっても、最適なインデックスを指定することが可能である。さらに、本実施の形態３では、実施の形態２と同様に、ＳＱＬ文の記述方法の違いに依存せず、最適なインデックスを指定することも可能である。
【００４３】
本発明の実施の形態４．
続いて、本発明の実施の形態４にかかる情報処理システムについて説明する。
なお、本発明の実施の形態４にかかる情報処理システムの構成は、図２に示す実施の形態１と同様であるため、説明を省略する。
【００４４】
図３、１０、１１を参照して、本発明の実施の形態４にかかる情報処理システムの処理について説明する。図１０、１１は、本発明の実施の形態４にかかる情報処理システムの処理概要を示す図である。なお、ここでは、実施の形態１と同様の図３に例示するＤＢ４０に格納されるテーブル４１から、ＳＱＬ文５４によって情報を抽出する場合を例として説明する。なお、実施の形態１と同様の処理については説明を省略する。
【００４５】
構文解析部１１は、ＳＱＬ文５４を取得すると(Ｓ４００)、図１０に示すように、ＳＱＬ文５４においてＯＲＤＥＲ ＢＹ句以下の構文を個々の要素に分解する(Ｓ４０１)。
次に、意味解析部１２は、構文解析部１１から構文解析結果を取得すると(Ｓ４０２)、ＯＲＤＥＲ ＢＹ句において条件となる要素である"Ｃ２"を特定し、さらに特定した条件をテーブル名も含めた条件"Ｔ１.Ｃ２"に変換する。
そして、意味解析部１２は、条件"Ｔ１.Ｃ２"の文字列情報を条件情報として、条件取得部２０に出力する。
【００４６】
次に、インデックス指定部２１は、条件取得部２０を介して、条件情報を取得すると(Ｓ４０５)、インデックス指定テーブルから条件"Ｔ１.Ｃ２"に対応する最適なインデックス情報"Ｉ２"を取得する(Ｓ４０６、Ｓ４０７、Ｓ４０８)。
そして、最適化部１３は、インデックス指定部２１からインデックス情報を取得すると(Ｓ４０９)、取得したインデックス情報が示すインデックス"Ｉ２"を使用するようにして、アクセスパスを決定する。なお、これ以降の処理は、実施の形態１と同様となるため、説明を省略する。
【００４７】
以上に説明したように、本実施の形態４では、ＯＲＤＥＲ ＢＹ句が記述されたＳＱＬ文によってソートした情報を抽出する場合であっても、実施の形態１と同様に、最適なインデックスを指定することが可能である。また、ＡＰの修正をすることがなく、又は、ＡＰの修正が不可能な場合であっても、最適なインデックスを指定することが可能である。さらに、本実施の形態４では、実施の形態２と同様に、ＳＱＬ文の記述方法の違いに依存せず、最適なインデックスを指定することも可能である。
【００４８】
本発明の実施の形態５．
続いて、本発明の実施の形態５にかかる情報処理システムについて説明する。
なお、本発明の実施の形態５にかかる情報処理システムの構成は、図２に示す実施の形態１と同様であるため、説明を省略する。
【００４９】
図３、１２、１３を参照して、本発明の実施の形態５にかかる情報処理システムの処理について説明する。図１２、１３は、本発明の実施の形態５にかかる情報処理システムの処理概要を示す図である。なお、ここでは、実施の形態１と同様の図３に例示するＤＢ４０に格納されるテーブル４１から、ＳＱＬ文５５によって情報を抽出する場合を例として説明する。なお、実施の形態１と同様の処理については説明を省略する。
【００５０】
構文解析部１１は、ＳＱＬ文５５を取得すると(Ｓ５００)、図１２に示すように、ＳＱＬ文５５においてＧＲＯＵＰ ＢＹ句以下の構文を個々の要素に分解する(Ｓ５０１)。
次に、意味解析部１２は、構文解析部１１から構文解析結果を取得すると(Ｓ５０２)、ＧＲＯＵＰ ＢＹ句において条件となる要素である"Ｃ１"を特定し、さらに特定した条件をテーブル名も含めた条件"Ｔ１.Ｃ１"に変換する。なお、ここでは、ＧＲＯＵＰ ＢＹ句において指定されている要素"Ｃ１"を条件として特定する場合について例示したが、ＳＵＭ、ＭＡＸ、ＭＩＮ、ＡＶＧ、ＣＯＵＮＴ等の集合関数において指定されている要素"Ｃ３"を条件として特定してもよい。
そして、意味解析部１２は、条件"Ｔ１.Ｃ１"の文字列情報を条件情報として、条件取得部２０に出力する。
【００５１】
次に、インデックス指定部２１は、条件取得部２０を介して、条件情報を取得すると(Ｓ５０５)、インデックス指定テーブルから条件"Ｔ１.Ｃ１"に対応する最適なインデックス情報"Ｉ１"を取得する(Ｓ５０６、Ｓ５０７、Ｓ５０８)。
そして、最適化部１３は、インデックス指定部２１からインデックス情報を取得すると(Ｓ５０９)、取得したインデックス情報が示すインデックス"Ｉ１"を使用するようにして、アクセスパスを決定する。なお、これ以降の処理は、実施の形態１と同様となるため、説明を省略する。
【００５２】
以上に説明したように、本実施の形態５では、ＧＲＯＰＵ ＢＹ句が記述されたＳＱＬ文によってグルーピングして情報を抽出する場合であっても、実施の形態１と同様に、最適なインデックスを指定することが可能である。また、ＡＰの修正をすることがなく、又は、ＡＰの修正が不可能な場合であっても、最適なインデックスを指定することが可能である。さらに、本実施の形態５では、実施の形態２と同様に、ＳＱＬ文の記述方法の違いに依存せず、最適なインデックスを指定することも可能である。
【００５３】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
例えば、本実施の形態では、本発明をＳＱＬに適用した場合について例示したが、ＳＱＬではなく、ＳＱＬと同様にインデックスを使用するデータベース言語であれば、どのようなものであってもよい。
【００５４】
以上に説明した本発明にかかる情報処理システムは、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体をシステムもしくは装置に供給し、システムあるいは装置の有するコンピュータ又はＣＰＵ(Central Processing Unit)、ＭＰＵ(Micro Processing Unit)がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＤＶＤ(Digital Versatile Disc)、ＢＤ(Blu-ray Disc)、ＲＯＭ(Read Only Memory)カートリッジ、バッテリバックアップ付きＲＡＭ(Random Access Memory)、メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジを含む。また、通信媒体には、電話回線の有線通信媒体、マイクロ波回線の無線通信媒体を含み、インターネットも含まれる。
【００５５】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているＯＳ(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【符号の説明】
【００５６】
１    情報処理システム
２    バッチＡＰ
３    ＯＬＴＰシステム
１０    ＤＢＭＳ
１１    構文解析部
１２    意味解析部
１３、９１    最適化部
１４    オブジェクト生成部
１５    実行処理部
２０    条件取得部
２１、９２    インデックス指定部
２２    インデックス情報更新部
３０    インデックス情報記憶部
４０、９４    ＤＢ
５０、５１、５２、５３、５４、５５    ＳＱＬ文
４１、４２    テーブル
８０    命令文
９０    解析部
【図１】
2010231332.tif 000003
【図２】
2010231332.tif 000004
【図３】
2010231332.tif 000005
【図４】
2010231332.tif 000006
【図５】
2010231332.tif 000007
【図６】
2010231332.tif 000008
【図７】
2010231332.tif 000009
【図８】
2010231332.tif 000010
【図９】
2010231332.tif 000011
【図１０】
2010231332.tif 000012
【図１１】
2010231332.tif 000013
【図１２】
2010231332.tif 000014
【図１３】
2010231332.tif 000015