(57)【特許請求の範囲】
【請求項１】
データベースの操作を行うプログラムロジックが前記データベースの検索に利用する検索キーを最適化する検索キー最適化装置であって、
前記プログラムロジックから前記データベースの検索に利用する検索キーを１つ以上抽出する第一の検索キー抽出手段と、
既に定義済みの検索キーが定義されているデータベース定義体から前記データベースの検索に利用する検索キーを１つ以上抽出する第二の検索キー抽出手段と、
前記検索キーを構成する前記データベースの項目毎に、検索に利用されるときのレコードの絞り込みの程度により優先順位が設定されている優先順位情報を利用して、前記第１の検索キー抽出手段により抽出された前記検索キーの適性チェックを行い、単一で検索に利用されたときのレコードの絞り込みの程度が大きい項目から小さい項目の順番に、前記検索キーを構成する前記データベースの項目が並んでいるときに適正チェックが正常終了したと判定し、適性チェックが正常終了した前記検索キーにより前記データベース定義体を更新する検索キー適正チェック手段と
を有する検索キー最適化装置。
【請求項２】
前記優先順位情報は更に、前記検索キーを構成する前記データベースの項目の内、検索に利用されたときにレコードを一意に絞り込む前記項目と、検索に利用しない前記項目とが設定されており、
前記検索キー適正チェック手段は、検索に利用されたときにレコードを一意に絞り込む前記項目と、検索に利用しない前記項目とを含むように構成される前記検索キーを不適切な検索キーとして抽出する請求項１記載の検索キー最適化装置。
【請求項３】
前記検索キー適正チェック手段は、不適切な検索キーとして抽出した前記検索キーを表示手段に表示すると共に、前記プログラムロジックを不適切なプログラムロジックとして前記表示手段に表示する請求項２記載の検索キー最適化装置。
【請求項４】
データベースの操作を行うプログラムロジックが前記データベースの検索に利用する検索キーを最適化する検索キー最適化装置を、
前記プログラムロジックから前記データベースの検索に利用する検索キーを１つ以上抽出する第一の検索キー抽出手段と、
既に定義済みの検索キーが定義されているデータベース定義体から前記データベースの検索に利用する検索キーを１つ以上抽出する第二の検索キー抽出手段と、
前記検索キーを構成する前記データベースの項目毎に、検索に利用されるときのレコードの絞り込みの程度により優先順位が設定されている優先順位情報を利用して、前記第１の検索キー抽出手段により抽出された前記検索キーの適性チェックを行い、単一で検索に利用されたときのレコードの絞り込みの程度が大きい項目から小さい項目の順番に、前記検索キーを構成する前記データベースの項目が並んでいるときに適正チェックが正常終了したと判定し、適性チェックが正常終了した前記検索キーにより前記データベース定義体を更新する検索キー適正チェック手段と
して機能させる為の検索キー最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索キー最適化装置及び検索キー最適化プログラムに係り、特にプログラムロジックがデータベースの検索に利用する検索キーを最適化する検索キー最適化装置及び検索キー最適化プログラムに関する。
【背景技術】
【０００２】
近年では、データベース（ＤＢ）を利用するシステム（プログラムロジック）が設計されるようになった。通常、プログラムロジックはＤＢへの高速アクセスを目的として設計時にインデックス（検索キー）が生成される。従来、インデックスは例えばプログラムロジックから生成されていた（例えば特許文献１及び２参照）。
【特許文献１】特表２００１−５２７２４３号公報
【特許文献２】特開平４−２７３５３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、プログラムロジックからインデックスを生成する場合は、プログラムロジックを前提としてインデックスを生成するため、プログラムロジック自体にＤＢアクセス時のレスポンス品質上（検索効率上）の問題がある場合、ＤＢアクセス時のレスポンス品質を無視したインデックスを生成してしまうことがあった。
【０００４】
したがって、ＤＢアクセス時のレスポンス品質を確保する為には、プログラムロジックの設計者がプログラムロジックを解析し、ＤＢアクセス時のレスポンス品質を確保する為に最適なインデックスを生成しなければならず、設計者の作業量が増加してしまうという問題があった。
【０００５】
本発明の一実施形態は、上記の点に鑑みなされたもので、設計者の作業量を増加させることなくデータベースアクセス時のレスポンス品質を確保可能な検索キー最適化装置及び検索キー最適化プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の一実施形態は、データベースの操作を行うプログラムロジックが前記データベースの検索に利用する検索キーを最適化する検索キー最適化装置であって、前記プログラムロジックから前記データベースの検索に利用する検索キーを１つ以上抽出する第一の検索キー抽出手段と、既に定義済みの検索キーが定義されているデータベース定義体から前記データベースの検索に利用する検索キーを１つ以上抽出する第二の検索キー抽出手段と、前記検索キーを構成する前記データベースの項目毎に、検索に利用されるときのレコードの絞り込みの程度により優先順位が設定されている優先順位情報を利用して、前記第１の検索キー抽出手段により抽出された前記検索キーの適性チェックを行い、単一で検索に利用されたときのレコードの絞り込みの程度が大きい項目から小さい項目の順番に、前記検索キーを構成する前記データベースの項目が並んでいるときに適正チェックが正常終了したと判定し、適性チェックが正常終了した前記検索キーにより前記データベース定義体を更新する検索キー適正チェック手段とを有する。
【０００７】
なお、本発明の一実施形態の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【０００８】
本発明の一実施形態によれば、設計者の作業量を増加させることなくデータベースアクセス時のレスポンス品質を確保可能な検索キー最適化装置及び検索キー最適化プログラムを提供可能である。
【発明を実施するための最良の形態】
【０００９】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明していく。なお、本実施例では、データベースの一例としてＲＤＢ（リレーショナルデータベース）を例に説明する。ＲＤＢは、１件のレコードを複数の項目（カラム）の集合体として表現し、データの集合をテーブルと呼ばれる表で表すデータ管理方式の一つである。ＲＤＢでは、個人番号や名前などの項目をインデックス（検索キー）として利用することで、レコードを容易に検索可能である。ＲＤＢでは、インデックスとして複数の項目から構成されるマルチカラムインデックス（複合項目検索キー）も利用される。ＲＤＢの操作には、例えばＳＱＬと呼ばれる言語が一般的に使われる。
【００１０】
ＲＤＢを利用するシステム（プログラムロジック）では、通常、設計者が設計時にインデックスをデータベース定義体に定義しておく。しかしながら、設計時の思惑と実際にできあがったプログラムロジックとに差異が発生することは、しばしば起こり得る。
【００１１】
本実施例では、実際にできあがったプログラムロジックを解析し、最適なインデックスを自動生成することで、設計時の思惑と実際にできあがったプログラムロジックとの差異により発生するインデックスのギャップを埋めることができる。
【００１２】
図１は、本実施例の検索キー最適化装置のハードウェア構成図である。検索キー最適化装置は、それぞれバスＢで相互に接続されている入力装置１，出力装置２，ドライブ装置３，補助記憶装置４，主記憶装置５，演算処理装置６およびインターフェース装置７で構成される。
【００１３】
入力装置１はキーボードやマウスなどで構成され、各種信号を入力するために用いられる。出力装置２はディスプレイ装置などで構成され、各種ウインドウやデータ等を表示するために用いられる。インターフェース装置７は、モデム，ＬＡＮカードなどで構成されており、ネットワークに接続する為に用いられる。
【００１４】
本実施例の検索キー最適化プログラムは、検索キー最適化装置を制御する各種プログラムの少なくとも一部である。検索キー最適化プログラムは、例えば記録媒体８の配布やネットワークからのダウンロードなどによって提供される。検索キー最適化プログラムを記録した記録媒体８は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的，電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００１５】
また、検索キー最適化プログラムを記録した記録媒体８がドライブ装置３にセットされると、検索キー最適化プログラムは記録媒体８からドライブ装置３を介して補助記憶装置４にインストールされる。ネットワークからダウンロードされた検索キー最適化プログラムは、インターフェース装置７を介して補助記憶装置４にインストールされる。
【００１６】
補助記憶装置４は、インストールされた検索キー最適化プログラムを格納すると共に、必要なファイル，データ等を格納する。主記憶装置５は、起動時に補助記憶装置４から検索キー最適化プログラムを読み出して格納する。そして、演算処理装置６は主記憶装置５に格納された検索キー最適化プログラムに従って、後述するような各種処理を実現している。
【００１７】
図２は本実施例の検索キー最適化装置の処理手順を表したフローチャートである。検索キー最適化装置は、プログラムロジックからのキー情報抽出を行う処理ロジック（プログラム）１０，データベース定義体からのキー情報抽出を行う処理ロジック１１，検索時一致率の設定を行う処理ロジック１２，抽出したキー情報からの過不足チェックを行う処理ロジック１３，抽出したキー情報の適正チェックを行う処理ロジック１４，データベース定義体更新／再登録を行う処理ロジック１５，プログラムロジック見直し／再登録を設計者に行わせる処理ロジック１６を有する構成である。処理ロジック１０〜１６は例えばＪＣＬ（ジョブ制御言語）により実行を制御される。
【００１８】
プログラムロジックからのキー情報抽出を行う処理ロジック１０はプログラムロジック２１を読み出す。処理ロジック１０は、プログラムロジック２１からインデックスの候補となる候補インデックス情報２３を抽出する。図３はプログラムロジックからインデックスの候補となる候補インデックス情報を抽出する処理を表した説明図である。
【００１９】
処理ロジック１０は、プログラムロジック２１に含まれるＳＱＬなどのデータベースアクセス言語の記述からインデックスの候補となるインデックス候補情報２３を以下の手順で抽出する。
【００２０】
まず、処理ロジック１０はデータベース関連の命令として「ＥＸＥＣ  ＳＱＬ」〜「ＥＮＤ−ＥＸＥＣ」の記述をプログラムロジック２１から抽出する。抽出した記述に「ＤＥＣＬＡＲＥ」及び「ＣＵＲＳＯＲ」が含まれていれば処理ロジック１０はインデックスの候補として抽出する。
【００２１】
処理ロジック１０は抽出した記述の「ＷＨＥＲＥ」以降を検索条件として抽出し、検索条件から候補インデックス情報２３を生成する。なお、「ＷＨＥＲＥ」は、検索条件を指定するものである。検索条件は、検索に利用する１つ以上の項目から構成されるインデックスと、前方一致や完全一致などの検索の手法とを表したものである。候補インデックスは一つ以上の項目から構成される。
【００２２】
処理ロジック１０は候補インデックス情報２３における項目の並びを記述順とし、条件設定優先順位に疑義がある場合、出力装置２等で設計者に警告を行う。条件設定優先順位とは、＝，＜＞，ＢＥＴＷＥＥＮ，前方一致，・・・などである。なお、本実施例では前方一致以降の条件設定優先順位を原則使用不可としている。
【００２３】
処理ロジック１０は抽出した記述に「ＯＲＤＥＲ  ＢＹ」があり、データ並び替えがある場合、補足情報として抽出する。なお、候補インデックス情報２３における項目以外でのデータ並び替えがあれば、処理ロジック１０は出力装置２等で設計者に警告を行うようにしてもよい。
【００２４】
データベース定義体からのキー情報抽出を行う処理ロジック１１は、データベース定義体２２から既に定義されているインデックス情報を抽出する。処理ロジック１１は、インデックス情報の抽出をテーブル毎に行い、インデックスを構成する項目及びキー重複許可有無をインデックス毎に、設定済インデックス情報２４として抽出する。
【００２５】
検索時一致率の設定を行う処理ロジック１２は、図４に示すように検索時一致率を設定する。図４は検索時一致率を設定する処理のフローチャートである。検索時一致率の設定を行う処理ロジック１２は、ステップＳ１に進み、データベース定義体２２から既に定義されているインデックス情報を抽出する。処理ロジック１２は、インデックス情報の抽出をテーブル毎に行い、インデックスを構成する項目及びキー重複許可有無をインデックス毎に、設定済インデックス情報２４として抽出する。
【００２６】
ステップＳ２に進み、処理ロジック１２はデータベース２９に格納されているデータからテーブル毎に指定した複合キー構成候補項目３０毎のデータ分布状況３１を抽出する。ここではステップＳ２の処理について図５を参照しつつ説明する。図５は、複合キー構成候補項目毎のデータ分布状況を表した構成図である。
【００２７】
例えば処理ロジック１２はデータベース２９に格納されているデータからテーブル毎の格納レコード件数（全件）をユーティリティにて確認する。図５では３００，０００件となる。処理ロジック１２は、複合キー構成候補項目毎のバラツキを計測する為に、項目毎の検索キー（範囲）を設定し、設定キー範囲内のレコード件数を確認して、平均件数を該当件数とする。
【００２８】
例えば図５では複合キー構成候補項目「生年月日」について、「平成１９年１月１日」，「昭和３９年１月１日」，「昭和５年１月１日」など、数パターンの検索キーを設定し、検索結果である「１０件」，「８件」，「５件」など、検索結果の平均件数である「９件」を該当件数とする。
【００２９】
処理ロジック１２は、画面表示可能件数などを指標として操作性を踏まえ、該当件数からバラツキ「大」，「中」，「小」を判定する。例えば図５では、画面表示可能件数を２０件とした場合、画面操作なしで検索結果を全件表示できる２０件以下をバラツキ「小」としている。また、図５では、画面表示可能件数を２０件とした場合、１〜４回の画面操作で検索結果を全件表示できる１００件以下をバラツキ「中」とし、５回以上の画面操作で検索結果を全件表示できる１００件超をバラツキ「大」としている。
【００３０】
ステップＳ３に進み、処理ロジック１２は設定済インデックス情報２４，複合キー構成候補項目毎のデータ分布状況３１及び複合キー構成候補業務特性３２から検索時一致率を設定する。複合キー構成候補業務特性３２は、複合キー構成候補項目が業務上、完全一致で使用する場合が多いのか、前方一致で使用する場合が多いのか等、規定されている。
【００３１】
例えば図５では、複合キー構成候補項目「氏名カナ（氏名）」が前方一致、複合キー構成候補項目「生年月日」が完全一致、複合キー構成候補項目「性別」が検索後の振り分けのみに使用等、規定されている。
【００３２】
処理ロジック１２は、複合キー構成候補業務特性３２に規定されている検索の手法「完全一致＞前方一致＞曖昧検索」及びバラツキ「小＞中＞大」の優先順位で検索時一致率２５を設定する。検索時一致率２５とは、複合キー構成候補項目毎の優先順位を言う。例えば本実施例では複合キー構成候補項目毎の優先順位を２桁の数字で設定する。重複を許さない複合キー構成候補項目は優先順位を「１ｘ」（ｘ：０〜９）で設定される。完全一致で使用する複合キー構成候補項目は優先順位を「２ｘ」（ｘ：０〜９）で設定される。前方一致で使用する複合キー構成候補項目は優先順位を「３ｘ」（ｘ：０〜９）で設定される。検索キーとして利用しない複合キー構成候補項目は優先順位を「９ｘ」（ｘ：０〜９）で設定される。
【００３３】
例えば、個人を特定するための一例の複合キー構成候補項目「個人番号：重複を許さない複合キー構成候補項目」は、優先順位を「１０」に設定される。「住所：完全一致で使用する複合キー構成候補項目、バラツキ小」は、優先順位を「２１」に設定される。「生年月日：完全一致で使用する複合キー構成候補項目、バラツキ小」は、優先順位を「２２」に設定される。「氏名：前方一致で使用する複合キー構成候補項目、バラツキ大」は、優先順位を「３１」に設定される。「性別：検索キーとして利用しない複合キー構成候補項目」は優先順位を「９０」に設定される。
【００３４】
なお、優先順位を設定する２桁の数字は小さいほど優先順位が高くなる。図５では平均件数が小さい（バラツキが小さい）複合キー構成候補項目の方が優先順位を高く設定される。
【００３５】
抽出したキー情報からの過不足チェックを行う処理ロジック１３及び抽出したキー情報の適正チェックを行う処理ロジック１４は、前述の候補インデックス情報２３，設定済インデックス情報２４及び検索時一致率２５に基づいて、マルチカラムインデックス最適化を行う。
【００３６】
抽出したキー情報からの過不足チェックを行う処理ロジック１３は、設定済インデックス情報２４と突き合わせを行って候補インデックス情報２３の過不足をチェックし、候補インデックス情報２６とする。
【００３７】
抽出したキー情報の適正チェックを行う処理ロジック１４は、後述のように、候補インデックス情報２６，設定済インデックス情報２４及び検索時一致率２５に基づいて候補インデックス情報２６の適正チェックを行う。
【００３８】
例えば、候補インデックス情報２６の適正チェックは設定済インデックス情報２４と候補インデックス情報２６との突き合わせを行い、検索時一致率２５を利用して追加すべきインデックスがあるか、設定済みであるが使用されることのないインデックスがないかのチェックを行う。
【００３９】
抽出したキー情報の適正チェックを行う処理ロジック１４は適正チェックの結果に基づいて候補インデックス情報２６を適正な候補インデックス情報２７に更新する。また、処理ロジック１４は適正チェックの結果に基づいて、プログラムロジック２１の見直すべき内容２８を抽出する。
【００４０】
ここでは、処理ロジック１４が行う候補インデックス情報２６の適正チェックについて具体例を挙げて説明する。図６は設定済インデックス情報，候補インデックス情報及び検索時一致率の一例を示す説明図である。
【００４１】
設定済インデックス情報６１は項目「個人番号」，「住所」，「氏名」，「生年月日」が既にインデックス情報として定義されている例である。また、候補インデックス情報６２は項目「個人番号」，「住所」，「氏名」，「生年月日」の組み合わせにより構成される６つのインデックスの候補がプログラムロジック２１から抽出された例である。
【００４２】
検索時一致率６３は、項目「個人番号」，「住所」，「生年月日」，「氏名」，「性別」に優先順位「１０」，「２１」，「２２」，「３１」，「９０」が設定された例である。以下の説明では図６の設定済インデックス情報６１，候補インデックス情報６２及び検索時一致率６３を前提として説明する。
【００４３】
処理ロジック１４は検索時一致率６３を用いて、設定済インデックス情報６１及び候補インデックス情報６２の項目を、図７の設定済インデックス情報６４及び候補インデックス情報６５ようにコード化する。図７は、コード化後の設定済インデックス情報及び候補インデックス情報を示す説明図である。図７の設定済インデックス情報６４及び候補インデックス情報６５の項目は、検索時一致率６３に設定されている優先順位と同じ優先順位を表す２桁の数字が設定されている。
【００４４】
処理ロジック１４は候補インデックス情報６５の６つのインデックスの候補毎に、項目の順番を図８の候補インデックス６６のように、優先順位を表す２桁の数字の昇順に並び替える。図８は、優先順位に基づいた項目の並び替え後の候補インデックス情報を示す説明図である。
【００４５】
処理ロジック１４は、図７の候補インデックス情報６５及び図８の候補インデックス情報６６の６つのインデックスの候補毎に、項目の順番を比較すると共に、優先順位を表す２桁の数字をチェックし、後述の適正チェックを行う。
【００４６】
図７の候補インデックス情報６５のインデックスの候補ａ）は、項目の順番が異なるためインデックスの候補から外される。処理ロジック１４はプログラムロジック２１の見直すべき内容２８として、インデックスの候補ａ）の項目の順番「生年月日」，「氏名」を抽出する。
【００４７】
図７の候補インデックス情報６５のインデックスの候補ｂ）は、項目の順番が一致するためインデックスの候補に残される。図７の候補インデックス情報６５のインデックスの候補ｃ）は、検索キーとして利用しない優先順位を表す２桁の数字「９０」が設定された項目「性別」が使用されているためインデックスの候補から項目「性別」が外される。なお、処理ロジック１４はプログラムロジック２１の見直すべき内容２８として、インデックスの候補ｃ）の項目「性別」の除外、検索後の内容チェックでの性別判定を抽出する。
【００４８】
図７の候補インデックス情報６５のインデックスの候補ｄ）は、項目の順番が一致するためインデックスの候補に残される。図７の候補インデックス情報６５のインデックスの候補ｅ）は、項目の順番が異なるためインデックスの候補から外される。処理ロジック１４はプログラムロジック２１の見直すべき内容２８として、インデックスの候補ｅ）の項目の順番「住所」，「生年月日」，「氏名」を抽出する。
【００４９】
また、図７の候補インデックス情報６５のインデックスの候補ｆ）は、他の項目との重複を許さない優先順位を表す２桁の数字「１０」が設定された項目「個人番号」が、他の項目「氏名」と重複して使用されているためインデックスの候補から外される。なお、処理ロジック１４はプログラムロジック２１の見直すべき内容２８として、仕様に根本的な問題がある可能性を抽出する。
【００５０】
図８の候補インデックス情報６６は、処理ロジック１４による適性チェックにより図９の候補インデックス６７となる。図９は、適正チェック後の候補インデックスを示す説明図である。図９の候補インデックス情報６７は、インデックスの候補ｄ）がインデックスの候補ａ）と同じため、インデックスの候補ａ）に吸収されている。
【００５１】
処理ロジック１４は設定済インデックス情報６４と候補インデックス情報６７との突き合わせを行い、図１０の候補インデックス情報６８及び設定済インデックス情報６９のように追加候補のインデックスを決定する。図１０は、追加候補のインデックスを決定する処理の説明図である。
【００５２】
処理ロジック１４は、候補インデックス情報６７の５つのインデックスの候補を候補インデックス情報６８のように、項目に設定された優先順位で並び替える。また、処理ロジック１４は設定済インデックス情報６４に定義されているインデックスを設定済インデックス情報６９のように、項目に設定された優先順位で並び替える。なお、インデックスの先頭を構成する項目（先頭構成項目）が同一のインデックスが複数ある場合はインデックスを構成する項目の数（構成項目数）が少ない順に並び替え、更に同一の構成項目数である場合、項目に設定された優先順位で並び替える。
【００５３】
処理ロジック１４は、設定済インデックス情報６９に無く、候補インデックス情報６８にあるインデックスを追加候補のインデックスとして決定する。図１０は、インデックスの候補ｂ），インデックスの候補ｅ）及びインデックスの候補ａ）が追加候補のインデックスとして決定された例である。
【００５４】
処理ロジック１４は、インデックスの候補ａ），インデックスの候補ｂ）及びインデックスの候補ｅ）を追加候補のインデックスとして、図１１のような設定予定インデックス情報７０を生成する。図１１は設定予定インデックス情報の一例を示す説明図である。
【００５５】
処理ロジック１４は、設定予定インデックス情報７０のインデックスが実際に使われる可能性があるか否かの判定を行う。インデックスａ）及びインデックスｇ）は、先頭の項目が重なる他のインデックスが無いため、継続使用される。また、インデックスｂ），インデックスｃ）及びインデックスｄ）は、項目「住所」を先頭構成項目とした何れか１つのインデックスしか使用されないため、検索時一致率で一番有効と判断されるインデックスｄ）を採用し、インデックスｂ）及びインデックスｃ）を削除する。
【００５６】
また、インデックスｅ）及びインデックスｆ）は、項目「生年月日」を先頭構成項目とした何れか１つのインデックスしか使用されないため、検索時一致率で一番有効と判断されるインデックスｆ）を採用し、インデックスｅ）を削除する。
【００５７】
なお、先頭構成項目が同一のインデックス内で先頭構成項目以外の項目がバラバラの場合は、検索時一致率を基に新たなインデックス（全ての項目を網羅したインデックス）を作成する。
【００５８】
データベース定義体更新／再登録を行う処理ロジック１５は、処理ロジック１４により更新された適正な候補インデックス情報２７を利用することで、データベース定義体２２の更新／再登録を行う。また、プログラムロジック見直し／再登録を設計者に行わせる処理ロジック１６は、処理ロジック１４により抽出されたプログラムロジック２１の見直すべき内容２８を利用することで、プログラムロジック２１の見直し／再登録を設計者に行わせるための警告を出力装置２等に表示する。
【００５９】
以上、本実施例によれば、ＤＢアクセス時のレスポンス品質を意識しつつ、プログラムロジック２１からインデックス（データベース定義体２２）を生成することができ、設計者の作業量を増加させることなくデータベースアクセス時のレスポンス品質を確保可能である。
【００６０】
本発明は、以下に記載する付記のような構成が考えられる。
（付記１）
データベースの操作を行うプログラムロジックが前記データベースの検索に利用する検索キーを最適化する検索キー最適化装置であって、
前記プログラムロジックから前記データベースの検索に利用する検索キーを１つ以上抽出する第一の検索キー抽出手段と、
既に定義済みの検索キーが定義されているデータベース定義体から前記データベースの検索に利用する検索キーを１つ以上抽出する第二の検索キー抽出手段と、
前記検索キーを構成する前記データベースの項目毎に、検索に利用されるときの優先順位が設定されている優先順位情報を利用して、前記第１の検索キー抽出手段により抽出された前記検索キーの適性チェックを行い、適性チェックが正常終了した前記検索キーにより前記データベース定義体を更新する検索キー適正チェック手段と
を有する検索キー最適化装置。
（付記２）
前記優先順位情報は、前記検索キーを構成する前記データベースの項目毎に、検索に利用されたときのレコードの絞り込みの程度が設定されており、
前記検索キー適正チェック手段は、単一で検索に利用されたときのレコードの絞り込みの程度が大きい項目から小さい項目の順番に、前記検索キーを構成する前記データベースの項目が並んでいるときに適正チェックが正常終了したと判定する付記１記載の検索キー最適化装置。
（付記３）
前記優先順位情報は更に、前記検索キーを構成する前記データベースの項目の内、検索に利用されたときにレコードを一意に絞り込む前記項目と、検索に利用しない前記項目とが設定されており、
前記検索キー適正チェック手段は、検索に利用されたときにレコードを一意に絞り込む前記項目と、検索に利用しない前記項目とを含むように構成される前記検索キーを不適切な検索キーとして抽出する付記２記載の検索キー最適化装置。
（付記４）
前記検索キー適正チェック手段は、不適切な検索キーとして抽出した前記検索キーを表示手段に表示すると共に、前記プログラムロジックを不適切なプログラムロジックとして前記表示手段に表示する付記３記載の検索キー最適化装置。
（付記５）
前記検索キー適正チェック手段は、複数の前記検索キーから、前記検索キーを構成する前記データベースの項目の内、先頭の項目が同じ前記検索キーを抽出し、抽出した前記検索キーから前記優先順位情報に基づき最も優先順位が高い前記検索キー以外を削除する付記１記載の検索キー最適化装置。
（付記６）
データベースの操作を行うプログラムロジックが前記データベースの検索に利用する検索キーを最適化する検索キー最適化装置を、
前記プログラムロジックから前記データベースの検索に利用する検索キーを１つ以上抽出する第一の検索キー抽出手段と、
既に定義済みの検索キーが定義されているデータベース定義体から前記データベースの検索に利用する検索キーを１つ以上抽出する第二の検索キー抽出手段と、
前記検索キーを構成する前記データベースの項目毎に、検索に利用されるときの優先順位が設定されている優先順位情報を利用して、前記第１の検索キー抽出手段により抽出された前記検索キーの適性チェックを行い、適性チェックが正常終了した前記検索キーにより前記データベース定義体を更新する検索キー適正チェック手段と
して機能させる為の検索キー最適化プログラム。
【００６１】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。なお、検索時一致率２５の設定は設計者が過去の経験から手動で設定してもよい。
【図面の簡単な説明】
【００６２】
【図１】本実施例の検索キー最適化装置のハードウェア構成図である。
【図２】本実施例の検索キー最適化装置の処理手順を表したフローチャートである。
【図３】プログラムロジックからインデックスの候補となる候補インデックス情報を抽出する処理を表した説明図である。
【図４】検索時一致率を設定する処理のフローチャートである。
【図５】複合キー構成候補項目毎のデータ分布状況を表した構成図である。
【図６】設定済インデックス情報，候補インデックス情報及び検索時一致率の一例を示す説明図である。
【図７】コード化後の設定済インデックス情報及び候補インデックス情報を示す説明図である。
【図８】優先順位に基づいた項目の並び替え後の候補インデックス情報を示す説明図である。
【図９】適正チェック後の候補インデックスを示す説明図である。
【図１０】追加候補のインデックスを決定する処理の説明図である。
【図１１】設定予定インデックス情報の一例を示す説明図である。
【符号の説明】
【００６３】
１    入力装置
２    出力装置
３    ドライブ装置
４    補助記憶装置
５    主記憶装置
６    演算処理装置
７    インターフェース装置
８    記録媒体
１０    プログラムロジックからのキー情報抽出を行う処理ロジック
１１    データベース定義体からのキー情報抽出を行う処理ロジック
１２    検索時一致率の設定を行う処理ロジック
１３    抽出したキー情報からの過不足チェックを行う処理ロジック
１４    抽出したキー情報の適正チェックを行う処理ロジック
１５    データベース定義体更新／再登録を行う処理ロジック
１６    プログラムロジック見直し／再登録を設計者に行わせる処理ロジック
２１    プログラムロジック
２２    データベース定義体
２３，２６，２７    候補インデックス情報
２４    設定済インデックス情報
２５    検索時一致率
２８    プログラムロジックの見直すべき内容
２９    データベース
３０    複合キー構成候補
３１    複合キー構成候補項目毎のデータ分布状況
３２    複合キー構成候補業務特性
【図１】
0005320787.tif 000002
【図２】
0005320787.tif 000003
【図３】
0005320787.tif 000004
【図４】
0005320787.tif 000005
【図５】
0005320787.tif 000006
【図６】
0005320787.tif 000007
【図７】
0005320787.tif 000008
【図８】
0005320787.tif 000009
【図９】
0005320787.tif 000010
【図１０】
0005320787.tif 000011
【図１１】
0005320787.tif 000012