(57)【要約】【課題】データベースシステムにおいて実行可能な問合せ文と類似する問合せ文を精度良く検索する。【解決手段】問合せ文検索装置１は、データベースシステム２において実行可能な問合せ文を示す検索文の入力を受け付ける入力受付部１２４と、データベースシステム２において実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する問合せ文の実行計画とを関連付けて記憶する記憶部１１を参照し、検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定する特定部１２５と、特定された実行計画に関連付けて記憶部１１に記憶されている問合せ文を検索結果として出力する出力部１２６と、を備える。【選択図】図２
2018180847.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムにおいて実行可能な問合せ文を示す検索文の入力を受け付ける入力受付部と、
前記データベースシステムにおいて実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する前記問合せ文の実行計画とを関連付けて記憶する記憶部を参照し、前記検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定する特定部と、
特定された実行計画に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力する出力部と、
を備える問合せ文検索装置。
【請求項２】
前記記憶部に記憶されている前記実行計画に基づいて、当該実行計画に対応する問合せ文の構造を抽出し、抽出された当該構造と、当該問合せ文において参照するテーブルとを示す検索用文字列を生成する文字列生成部と、
前記検索用文字列と、当該検索用文字列に対応する問合せ文とを関連付けて前記記憶部に記憶させる記憶制御部をさらに備え、
前記入力受付部は、前記検索文として前記検索用文字列を受け付け、
前記特定部は、前記記憶部を参照し、受け付けた前記検索文と少なくとも一部が一致する前記検索用文字列を特定し、
前記出力部は、特定された検索用文字列に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力する、
請求項１に記載の問合せ文検索装置。
【請求項３】
前記文字列生成部は、前記記憶部に記憶されている前記実行計画に基づいて、当該実行計画に対応する問合せ文の木構造を抽出し、抽出された当該木構造を、ルートとなるノードから行きがけ順及び帰りがけ順に走査することにより木構造を示す前記検索用文字列を生成する、
請求項２に記載の問合せ文検索装置。
【請求項４】
前記入力受付部は、前記検索文として前記問合せ文の入力を受け付け、
入力された前記問合せ文を前記検索用文字列に変換する変換部をさらに備え、
前記特定部は、前記記憶部を参照し、変換された検索用文字列と少なくとも一部が一致する前記検索用文字列を特定する、
請求項２又は３に記載の問合せ文検索装置。
【請求項５】
コンピュータが実行する、
データベースシステムにおいて実行可能な問合せ文を示す検索文の入力を受け付けるステップと、
前記データベースシステムにおいて実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する前記問合せ文の実行計画とを関連付けて記憶する記憶部を参照し、前記検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定するステップと、
特定された実行計画に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力するステップと、
を備える問合せ文検索方法。
【請求項６】
コンピュータを、
データベースシステムにおいて実行可能な問合せ文を示す検索文の入力を受け付ける入力受付部、
前記データベースシステムにおいて実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する前記問合せ文の実行計画とを関連付けて記憶する記憶部を参照し、前記検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定する特定部、及び、
特定された実行計画に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力する出力部、
として機能させる問合せ文検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムにおいて実行可能な問合せ文を検索する問合せ文検索装置、問合せ文検索方法及び問合せ文検索プログラムに関する。
【背景技術】
【０００２】
従来、データベースシステムにおいて実行可能なＳＱＬ（Structured Query Language）等の問合せ文の履歴の中から、特定の問合せ文と問合せの内容が一致又は類似する問合せ文を検索することが行われている。特定の問合せ文に一致又は類似する問合せ文を検索する方法としては、問合せ文を文字列として扱い、文字列の類似度を測る方法がある。そして、文字列の類似度を測定する方法として、レーベンシュタイン距離を用いる方法が従来から提案されている（例えば、特許文献１参照）。レーベンシュタイン距離は、文字列を比較対象の文字列に変換する場合に要する編集の回数を示しており、０回であれば、文字列と、比較対象の文字列とが一致していることを示している。また、レーベンシュタイン距離の値が小さければ小さいほど、文字列と、比較対象の文字列との類似度が高いことを示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−７６０６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、データベースシステムにおいて実行可能な問合せ文であるＳＱＬは、書式の自由度が高いことから、同じ内容の問合せ文であっても複数の表現方法がある。このため、文字列の類似度によって、特定の問合せ文と、問合せの内容が一致又は類似する問合せ文を正確に検索することができないという問題がある。
【０００５】
また、問合せ文では、データベースシステムにおける複数のテーブルの結合を指定する構文が含まれることがある。しかしながら、問合せ文の全体を１つの文字列として扱う場合には、問合せ文の構造を考慮した検索を行うことができない。このため、問合せ文を示す文字列の類似度を測ることによって検索を行う方法では、所定のテーブルの結合処理を含む問合せ文といった、問合せ文の一部に着目した検索を行うことができないという問題がある。
【０００６】
そこで、本発明はこれらの点に鑑みてなされたものであり、データベースシステムにおいて実行可能な問合せ文と類似する問合せ文を精度良く検索することができる問合せ文検索装置、問合せ文検索方法及び問合せ文検索プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様に係る問合せ文検索装置は、データベースシステムにおいて実行可能な問合せ文を示す検索文の入力を受け付ける入力受付部と、前記データベースシステムにおいて実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する前記問合せ文の実行計画とを関連付けて記憶する記憶部を参照し、前記検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定する特定部と、特定された実行計画に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力する出力部と、を備える。
【０００８】
前記問合せ文検索装置は、前記記憶部に記憶されている前記実行計画に基づいて、当該実行計画に対応する問合せ文の構造を抽出し、抽出された当該構造と、当該問合せ文において参照するテーブルとを示す検索用文字列を生成する文字列生成部と、前記検索用文字列と、当該検索用文字列に対応する問合せ文とを関連付けて前記記憶部に記憶させる記憶制御部をさらに備え、前記入力受付部は、前記検索文として前記検索用文字列を受け付け、前記特定部は、前記記憶部を参照し、受け付けた前記検索文と少なくとも一部が一致する前記検索用文字列を特定し、前記出力部は、特定された検索用文字列に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力してもよい。
【０００９】
前記文字列生成部は、前記記憶部に記憶されている前記実行計画に基づいて、当該実行計画に対応する問合せ文の木構造を抽出し、抽出された当該木構造を、ルートとなるノードから行きがけ順及び帰りがけ順に走査することにより木構造を示す前記検索用文字列を生成してもよい。
【００１０】
前記入力受付部は、前記検索文として前記問合せ文の入力を受け付け、前記問合せ文検索装置は、入力された前記問合せ文を前記検索用文字列に変換する変換部をさらに備え、前記特定部は、前記記憶部を参照し、変換された検索用文字列と少なくとも一部が一致する前記検索用文字列を特定してもよい。
【００１１】
本発明の第２の態様に係る問合せ文検索方法は、コンピュータが実行する、データベースシステムにおいて実行可能な問合せ文を示す検索文の入力を受け付けるステップと、前記データベースシステムにおいて実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する前記問合せ文の実行計画とを関連付けて記憶する記憶部を参照し、前記検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定するステップと、特定された実行計画に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力するステップと、を備える。
【００１２】
本発明の第３の態様に係る問合せ文検索プログラムは、コンピュータを、データベースシステムにおいて実行可能な問合せ文を示す検索文の入力を受け付ける入力受付部、前記データベースシステムにおいて実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する前記問合せ文の実行計画とを関連付けて記憶する記憶部を参照し、前記検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定する特定部、及び、特定された実行計画に関連付けて前記記憶部に記憶されている問合せ文を検索結果として出力する出力部、として機能させる。
【発明の効果】
【００１３】
本発明によれば、データベースシステムにおいて実行可能な問合せ文と類似する問合せ文を精度良く検索することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態に係る問合せ文検索システムの概要を示す図である。
【図２】第１実施形態に係る問合せ文検索装置の構成を示す図である。
【図３】第１実施形態に係る問合せ履歴情報の一例を示す図である。
【図４Ａ】問合せ文の一例（その１）を示す図である。
【図４Ｂ】問合せ文の一例（その２）を示す図である。
【図４Ｃ】問合せ文の一例（その３）を示す図である。
【図４Ｄ】問合せ文の一例（その４）を示す図である。
【図５Ａ】図４Ａに示す問合せ文に対応する実行計画を示す図である。
【図５Ｂ】図４Ｂに示す問合せ文に対応する実行計画を示す図である。
【図５Ｃ】図４Ｃに示す問合せ文に対応する実行計画を示す図である。
【図５Ｄ】図４Ｄに示す問合せ文に対応する実行計画を示す図である。
【図６Ａ】図５Ａに示す実行計画に対応する実行計画ツリーを示す図である。
【図６Ｂ】図５Ｂに示す実行計画に対応する実行計画ツリーを示す図である。
【図６Ｃ】図５Ｃに示す実行計画に対応する実行計画ツリーを示す図である。
【図６Ｄ】図５Ｄに示す実行計画に対応する実行計画ツリーを示す図である。
【図７Ａ】図６Ａに示す実行計画ツリーに対応する検索用文字列を示す図である。
【図７Ｂ】図６Ｂに示す実行計画ツリーに対応する検索用文字列を示す図である。
【図７Ｃ】図６Ｃに示す実行計画ツリーに対応する検索用文字列を示す図である。
【図７Ｄ】図６Ｄに示す実行計画ツリーに対応する検索用文字列を示す図である。
【図８】第１実施形態に係る検索用情報の一例を示す図である。
【図９】図４Ａ〜図４Ｄに示す問合せ文の相互のレーベンシュタイン距離を示す図である。
【図１０】第１実施形態に係る検索用情報の生成に係る問合せ文検索装置の処理の流れを示すフローチャートである。
【図１１】第１実施形態に係る問合せ文の検索に係る問合せ文検索装置の処理の流れを示すフローチャートである。
【図１２】第２実施形態に係る問合せ文検索装置の構成を示す図である。
【発明を実施するための形態】
【００１５】
＜第１実施形態＞
［問合せ文検索システムＳの概要］
図１は、第１実施形態に係る問合せ文検索システムＳの概要を示す図である。問合せ文検索システムＳは、問合せ文検索装置１と、データベースシステム２と、端末３とを備え、検索文が示す処理に対応する問合せ文を検索するためのシステムである。
【００１６】
問合せ文検索装置１は、データベースシステム２及び端末３と、ＬＡＮやインターネット等の通信ネットワークを介して通信可能に接続されている。問合せ文検索装置１は、データベースシステム２において実行された問合せ文と、当該問合せ文に対応する実行計画とをデータベースシステム２から取得する（図１の（１））。
【００１７】
問合せ文検索装置１は、データベースシステム２から取得した実行計画に基づいて、当該実行計画に対応する問合せ文の構造を解析する（図１の（２））。問合せ文検索装置１は、解析した構造に対応する検索用文字列を生成し、当該検索用文字列と、問合せ文とを関連付けて記憶部に記憶する（図１の（３））。
【００１８】
問合せ文検索装置１は、端末３から、検索文として、検索用文字列を取得する（図１の（４））。問合せ文検索装置１は、記憶部に記憶されている検索用文字列のうち、取得した検索用文字列と類似する検索用文字列を特定する（図１の（５））。問合せ文検索装置１は、特定した検索用文字列に対応する問合せ文を特定する（図１の（６））。問合せ文検索装置１は、特定した問合せ文を、検索文に対応する検索結果として端末３に出力する（図１の（７））。
【００１９】
このように、問合せ文検索装置１は、実行計画を解析することで生成した検索用文字列に基づいて、検索文に類似する検索用文字列を特定するので、検索文が示す問合せ文と構造が類似する問合せ文を精度良く検索することができる。
以下、問合せ文検索装置１の構成について説明する。
【００２０】
［問合せ文検索装置１の構成例］
図２は、第１実施形態に係る問合せ文検索装置１の構成を示す図である。
問合せ文検索装置１は、記憶部１１と、制御部１２とを備える。
【００２１】
記憶部１１は、例えば、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等である。記憶部１１は、問合せ文検索装置１を機能させるための各種プログラムを記憶する。記憶部１１は、問合せ文検索装置１の制御部１２を、後述する取得部１２１、文字列生成部１２２、記憶制御部１２３、入力受付部１２４、特定部１２５、及び出力部１２６として機能させる問合せ文検索プログラムを記憶する。
【００２２】
制御部１２は、例えばＣＰＵ（Central Processing Unit）である。制御部１２は、記憶部１１に記憶されている各種プログラムを実行することにより、問合せ文検索装置１に係る機能を制御する。制御部１２は、問合せ文検索プログラムを実行することにより、取得部１２１、文字列生成部１２２、記憶制御部１２３、入力受付部１２４、特定部１２５、及び出力部１２６として機能する。
【００２３】
取得部１２１は、データベースシステム２から、問合せ文と、実行計画とを取得する。問合せ文は、データベースシステム２において実行されたＳＱＬ等の問合せ文である。実行計画は、データベースシステム２が、問合せ文に対応する処理を実行する際に生成する情報である。取得部１２１は、取得した問合せ文と、当該問合せ文に対応する実行計画とを関連付けて問合せ履歴情報として記憶部１１に記憶させる。図３は、問合せ履歴情報の一例を示す図である。図３に示すように、問合せ文と、実行計画とが関連付けられて記憶されていることが確認できる。
【００２４】
図４Ａ〜図４Ｄは、問合せ文の一例を示す図である。ここで、図４Ｂに示す問合せ文は、図４Ａに示す問合せ文と同じデータを出力するための問合せ文であり、図４Ａに示す問合せ文と異なる表現である問合せ文である。
【００２５】
図５Ａ〜図５Ｄは、図４Ａ〜図４Ｄに示す問合せ文に対応する実行計画を示す図である。図５において最初に示される文字列「Ｓｏｒｔ」と、「−＞」の後に示される文字列とは、問合せ文によって実行される処理としてのノードを示している。また、文字列「Ｓｃａｎ」を含むノード（以下、Ｓｃａｎノードともいう。）に続く文字列は、参照されるテーブルのテーブル名を示している。ここで、図４Ａに示す問合せ文と異なる表現である問合せ文であるものの、図５Ａに示す実行計画と、図５Ｂに示す実行計画とが同じ実行計画であることが確認できる。
【００２６】
文字列生成部１２２は、取得部１２１が取得した実行計画に基づいて検索用文字列を生成する。具体的には、文字列生成部１２２は、記憶部１１に記憶されている実行計画に基づいて、実行計画に含まれる処理を示すノードと、実行計画に対応する処理において参照されるテーブルのテーブル名を抽出する。文字列生成部１２２は、取得部１２１が取得した実行計画を示すコードの記載順序と、抽出したノード及びテーブル名とに基づいて、実行計画に対応する問合せ文の木構造を抽出する。文字列生成部１２２は、木構造のグラフである実行計画ツリーを生成する。
【００２７】
図６Ａ〜図６Ｄは、図５Ａ〜図５Ｄに示す実行計画に対応する実行計画ツリーを示す図である。実行計画ツリーでは、各ノードにおける処理の略称を、括弧内に示している。例えば、ルートノードに対応する処理「Ｓｏｒｔ」の略称は「Ｓ」であり、処理「Ｇｒｏｕｐ  Ａｇｇｒｅｇａｔｅ」の略称は「ＧＡ」である。また、実行計画ツリーでは、Ｓｃａｎノードの下部にテーブル名を示している。ここで、図６Ａに示す実行計画ツリーと、図６Ｂに示す実行計画ツリーとが同じ構造であることが確認できる。
【００２８】
文字列生成部１２２は、抽出された当該木構造を示す実行計画ツリーを、ルートとなるノードから行きがけ順及び帰りがけ順に走査することにより木構造を示す検索用文字列を生成する。すなわち、文字列生成部１２２は、実行計画ツリーを、ルートとなるノードから行きがけ順及び帰りがけ順に走査したときに検出されたノードの略称を、検出された順番で並べた文字列を検索用文字列として生成する。
【００２９】
ここで、文字列生成部１２２は、処理が重複するノードには通し番号を付与する。例えば、図６Ａに示されるノードＮ１と、ノードＮ２とは、いずれも「Ｓｏｒｔ（Ｓ）」である。そこで、文字列生成部１２２は、ノードＮ１の略称を「Ｓ１」とし、ノードＮ２の略称を「Ｓ２」とする。また、文字列生成部１２２は、Ｓｃａｎノードに対応する略称に、当該Ｓｃａｎノードにおいて参照されるテーブルのテーブル名称を関連付ける。
【００３０】
図７Ａ〜図７Ｄは、図６Ａ〜図６Ｄに示す実行計画ツリーに対応する検索用文字列を示す図である。図７に示すように、検索用文字列では、ノードが検出された順番に、当該ノードの略称が羅列されていることが確認できる。また、図７Ａに示す検索用文字列と、図７Ｂに示す検索用文字列とが同じ内容であることが確認できる。
【００３１】
文字列生成部１２２は、記憶部１１に記憶されている問合せ履歴情報に含まれる全ての問合せ文について検索用文字列を生成する。
記憶制御部１２３は、文字列生成部１２２が生成した検索用文字列と、当該検索用文字列に対応する問合せ文とを関連付けて検索用情報として記憶部１１に記憶させる。図８は、第１実施形態に係る検索用情報の一例を示す図である。図８に示すように、問合せ文と、検索用変換文字列とが関連付けられて記憶されていることが確認できる。
【００３２】
入力受付部１２４は、データベースシステム２において実行可能な問合せ文を示す検索文の入力を受け付ける。本実施形態において、入力受付部１２４は、端末３から、検索文として、検索用文字列を受け付ける。
【００３３】
特定部１２５は、データベースシステム２において実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する問合せ文の実行計画とを関連付けて記憶する記憶部１１を参照し、入力受付部１２４が受け付けた検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定する。
【００３４】
本実施形態において、特定部１２５は、記憶部１１に記憶されている検索用情報を構成する検索用文字列を参照し、入力受付部１２４が受け付けた検索文と少なくとも一部が一致する検索用文字列を特定する。具体的には、特定部１２５は、入力受付部１２４が受け付けた検索文と少なくとも一部が一致するとともに、入力受付部１２４が受け付けた検索文に含まれるテーブルと同じテーブルのみを含んでいる検索用文字列を特定する。ここで、特定部１２５は、検索用文字列の比較を行う場合には、各略称に付されている通し番号を除去した状態で、検索用文字列の比較を行うものとする。
【００３５】
例えば、入力受付部１２４が、図４Ａに示す問合せ文に対応する検索用文字列、すなわち、図７Ａに示す検索用文字列を検索文として受け付けた場合、特定部１２５は、当該検索用文字列と一致する検索用文字列として、図７Ａに示す検索用文字列と、図７Ｂに示す検索用文字列とを特定する。したがって、特定部１２５は、問合せ文としての表現が異なっていても実行計画が同一であれば、同じ問合せ文とみなして検索することができる。
【００３６】
別の例として、図４Ｃに示す問合せ文に対応する検索用文字列、すなわち、図７Ｃに示す検索用文字列の一部を検索文として利用することを考える。ｒｅｇｉｏｎテーブルとｎａｔｉｏｎテーブルとを結合する処理、及び、当該結合の結果とｃｕｓｔｏｍｅｒテーブルとの結合を行う処理に注目した場合、図６Ｃに示す実行計画ツリーにおいて、ルートノードから２番目のノード「Ｎｅｓｔｅｄ  Ｌｏｏｐ」以下の部分木が該当する。検索文は、以下のように表現される。
【００３７】
ＮＬ  ＢＳ  ＢＳ  ＨＪ  Ｈ  ＳＳ１  ＳＳ１  Ｈ  ＳＳ２  ＳＳ２  ＨＪ  ＮＬ
ＢＳ→ｃｕｓｔｏｍｅｒ，ＳＳ１→ｒｅｇｉｏｎ，ＳＳ２→ｎａｔｉｏｎ
【００３８】
特定部１２５は、上記の検索文と少なくとも一部が一致する検索用文字列として、図７Ｃに示す検索用文字列と、図７Ｄに示す検索用文字列を特定する。これは、問合せ文全体が一致するわけではないが、実行計画ツリーで問合せ文を表した場合に一部の構造を共有する類似した問合せ文を検索可能であることを示している。
【００３９】
なお、従来技術である文字列の類似度を測る手法と比較するため、図４Ａに示す問合せ文と、図４Ｂ〜図４Ｄに示す問合せ文とのレーベンシュタイン距離を示す。図９は、図４Ａ〜図４Ｄに示す問合せ文の相互のレーベンシュタイン距離を示す図である。
【００４０】
レーベンシュタイン距離は、値が小さいほど文字列の類似度が高いことを表している。同じ問合せ文の場合に、レーベンシュタイン距離は０となる。図９では、図４Ａに示す問合せ文と、図４Ｃに示す問合せ文とのレーベンシュタイン距離が小さく、これらの問合せ文の類似度が高いとされている。しかしながら、図４Ａに示す問合せ文と、図４Ｂに示す問合せ文とは、同じ処理内容を示しているため、実際には、図４Ａに示す問合せ文と、図４Ｂに示す問合せ文とが類似している。
【００４１】
また、図４Ｃに示す問合せ文と、図４Ｄに示す問合せ文のレーベンシュタイン距離は、図４Ｂに示す問合せ文と、図４Ｃに示す問合せ文とのレーベンシュタイン距離及び図４Ｂに示す問合せ文と、図４Ｄに示す問合せ文とのレーベンシュタイン距離に比べて大きく、類似度が低いとされている。しかしながら、図４Ｃに示す問合せ文と、図４Ｄに示す問合せ文とは、共通の処理を含むため、問合せ文の全体では一致しないものの、類似度が高いといえる。したがって、レーベンシュタイン距離による類似度の検索結果の精度が、本実施形態に係る問合せ文検索装置１における検索結果の精度よりも低いことが確認できる。
【００４２】
出力部１２６は、特定された実行計画に関連付けて記憶部１１に記憶されている問合せ文を検索結果として出力する。本実施形態において、出力部１２６は、記憶部１１に記憶されている検索用情報において、特定部１２５が特定した検索用文字列に関連付けられている問合せ文を検索結果として端末３に出力する。
【００４３】
［検索用情報の生成に係る処理の流れ］
続いて、問合せ文検索装置１における処理の流れについて説明する。まず、検索用情報の生成に係る問合せ文検索装置１の処理の流れについて説明する。図１０は、第１実施形態に係る検索用情報の生成に係る問合せ文検索装置１の処理の流れを示すフローチャートである。
【００４４】
まず、取得部１２１は、データベースシステム２から、問合せ文と、実行計画とを取得し（Ｓ１０）、問合せ文と、実行計画とを記憶部１１に記憶させる。
続いて、文字列生成部１２２は、記憶部１１に記憶されている実行計画に基づいて、実行計画に含まれる処理を示すノードと、実行計画に対応する処理において参照されるテーブルのテーブル名を抽出する（Ｓ２０）。
【００４５】
続いて、文字列生成部１２２は、抽出したノード及びテーブル名とに基づいて実行計画ツリーを生成する（Ｓ３０）。
続いて、文字列生成部１２２は、生成した実行計画ツリーに基づいて、検索用文字列を生成し（Ｓ４０）、当該検索用文字列と、当該検索用文字列に対応する問合せ文とを関連付けて検索用情報として記憶させる（Ｓ５０）。
【００４６】
文字列生成部１２２は、記憶部１１に記憶されている全ての問合せ文で検索用文字列を生成したか否かを判定する（Ｓ６０）。文字列生成部１２２は、全ての問合せ文で検索用文字列を生成したと判定すると、本フローチャートに係る処理を終了し、全ての問合せ文で検索用文字列を生成していないと判定すると、Ｓ２０に処理を移す。
【００４７】
［問合せ文の検索に係る処理の流れ］
続いて、問合せ文の検索に係る問合せ文検索装置１の処理の流れについて説明する。図１１は、第１実施形態に係る問合せ文の検索に係る問合せ文検索装置１の処理の流れを示すフローチャートである。
【００４８】
まず、入力受付部１２４は検索文として、検索用文字列を受け付ける（Ｓ１１０）。
続いて、特定部１２５は、記憶部１１に記憶されている検索用情報を構成する検索用文字列を参照し、入力受付部１２４が受け付けた検索文と少なくとも一部が一致する検索用文字列を特定する（Ｓ１２０）。
【００４９】
続いて、出力部１２６は、記憶部１１に記憶されている検索用情報において、特定部１２５が特定した検索用文字列に関連付けられている問合せ文を特定する（Ｓ１３０）。そして、出力部１２６は、特定した問合せ文を端末３に検索結果として出力する（Ｓ１４０）。
【００５０】
［第１実施形態における効果］
以上の通り、第１実施形態に係る問合せ文検索装置１は、データベースシステム２において実行可能な問合せ文を示す検索文の入力を受け付け、データベースシステム２において実行された複数の問合せ文と、当該複数の問合せ文のそれぞれに対応する問合せ文の実行計画とを関連付けて記憶する記憶部１１を参照し、当該検索文に対応する実行計画と少なくとも一部が一致する実行計画を特定し、特定された実行計画に関連付けて記憶部１１に記憶されている問合せ文を検索結果として出力する。
【００５１】
このようにすることで、問合せ文検索装置１は、問合せ文の表現形式が異なる同じ処理内容を示す問合せ文を、実行計画に基づいて同じ処理内容を示す問合せ文として扱うことができる。これにより、問合せ文検索装置１は、検索文が示す問合せ文と構造が類似する問合せ文を精度良く検索することができる。
【００５２】
＜第２実施形態＞
［検索文として問合せ文の入力を受け付ける。］
続いて、第２実施形態について説明する。第１実施形態では、検索文として検索用文字列の入力を受け付けた。これに対し、第２実施形態に係る問合せ文検索装置１は、検索文として問合せ文の入力を受け付ける点で第１実施形態に係る問合せ文検索装置１と異なる。以下に、第２実施形態に係る問合せ文検索装置１について説明する。なお、第１実施形態と同じ部分については適宜説明を省略する。
【００５３】
図１２は、第２実施形態に係る問合せ文検索装置１の構成を示す図である。図１２に示すように、第２実施形態に係る問合せ文検索装置１は、変換部１２７をさらに備える。
第２実施形態において、入力受付部１２４は、端末３から、検索文として問合せ文の入力を受け付ける。
【００５４】
変換部１２７は、入力された問合せ文を検索用文字列に変換する。例えば、変換部１２７は、入力された問合せ文をデータベースシステム２に送信し、当該問合せ文の実行計画の取得を要求する。データベースシステム２は、問合せ文が入力されると、当該問合せ文の実行計画を生成し、当該実行計画を問合せ文検索装置１に送信する。
【００５５】
変換部１２７は、データベースシステム２から実行計画を受信すると、当該実行計画に基づいて、実行計画に含まれる処理を示すノードと、実行計画に対応する処理において参照されるテーブルのテーブル名を抽出する。変換部１２７は、受信した実行計画を示すコードの記載順序と、抽出したノード及びテーブル名とに基づいて、実行計画に対応する問合せ文の実行計画ツリーを生成する。変換部１２７は、実行計画ツリーに基づいて検索用文字列を生成することにより、入力された問合せ文を検索用文字列に変換する。
【００５６】
特定部１２５は、記憶部１１に記憶されている検索用情報を構成する検索用文字列を参照し、変換部１２７によって変換された検索用文字列と少なくとも一部が一致する検索用文字列を特定する。
出力部１２６は、記憶部１１に記憶されている検索用情報において、特定部１２５が特定した検索用文字列に関連付けられている問合せ文を検索結果として端末３に出力する。
【００５７】
［第２実施形態における効果］
以上の通り、第２実施形態に係る問合せ文検索装置１は、検索文として問合せ文の入力を受け付け、入力された問合せ文を検索用文字列に変換し、記憶部１１に記憶されている検索用情報を参照し、変換された検索用文字列と少なくとも一部が一致する検索用文字列を特定する。
【００５８】
このようにすることで、端末３のユーザは、問合せ文に対応する検索用文字列を生成できなくても、問合せ文検索装置１に問合せ文を入力することにより、当該問合せ文と処理内容が類似する問合せ文を検索することができる。
【００５９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。例えば、上述の複数の実施形態を組み合わせてもよい。
【００６０】
また、上述の実施形態において、問合せ文検索装置１は、端末３から受け付けた検索用文字列と、検索用情報に含まれる検索用文字列とを比較することによって、端末３から受け付けた検索用文字列に類似する検索用文字列を特定したが、これに限らない。例えば、問合せ文検索装置１は、記憶部１１に、問合せ文と、実行計画とを関連付けて記憶させておき、端末３から、実行計画の少なくとも一部を示す文字列を受け付けてもよい。そして、問合せ文検索装置１は、受け付けた文字列と少なくとも一部が一致する実行計画を特定し、特定した実行計画に対応する問合せ文を検索結果として出力してもよい。
【００６１】
この場合において、問合せ文検索装置１は、問合せ文を受け付け、当該問合せ文を実行計画に変換してもよい。そして、問合せ文検索装置１は、変換された実行計画と少なくとも一部が一致する実行計画を特定し、特定した実行計画に対応する問合せ文を検索結果として出力してもよい。
【００６２】
また、特に、装置の分散・統合の具体的な実施形態は以上に図示するものに限られず、その全部又は一部について、種々の付加等に応じて、又は、機能負荷に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【符号の説明】
【００６３】
１・・・問合せ文検索装置、１１・・・記憶部、１２・・・制御部、１２１・・・取得部、１２２・・・文字列生成部、１２３・・・記憶制御部、１２４・・・入力受付部、１２５・・・特定部、１２６・・・出力部、１２７・・・変換部、２・・・データベースシステム、３・・・端末、Ｓ・・・問合せ文検索システム
【図１】
2018180847.tif 000003
【図２】
2018180847.tif 000004
【図３】
2018180847.tif 000005
【図４Ａ】
2018180847.tif 000006
【図４Ｂ】
2018180847.tif 000007
【図４Ｃ】
2018180847.tif 000008
【図４Ｄ】
2018180847.tif 000009
【図５Ａ】
2018180847.tif 000010
【図５Ｂ】
2018180847.tif 000011
【図５Ｃ】
2018180847.tif 000012
【図５Ｄ】
2018180847.tif 000013
【図６Ａ】
2018180847.tif 000014
【図６Ｂ】
2018180847.tif 000015
【図６Ｃ】
2018180847.tif 000016
【図６Ｄ】
2018180847.tif 000017
【図７Ａ】
2018180847.tif 000018
【図７Ｂ】
2018180847.tif 000019
【図７Ｃ】
2018180847.tif 000020
【図７Ｄ】
2018180847.tif 000021
【図８】
2018180847.tif 000022
【図９】
2018180847.tif 000023
【図１０】
2018180847.tif 000024
【図１１】
2018180847.tif 000025
【図１２】
2018180847.tif 000026