JP3111498B2 - レコード検索方法及びデータ処理装置 - Google Patents

レコード検索方法及びデータ処理装置

Info

Publication number
JP3111498B2
JP3111498B2 JP03090996A JP9099691A JP3111498B2 JP 3111498 B2 JP3111498 B2 JP 3111498B2 JP 03090996 A JP03090996 A JP 03090996A JP 9099691 A JP9099691 A JP 9099691A JP 3111498 B2 JP3111498 B2 JP 3111498B2
Authority
JP
Japan
Prior art keywords
index
record
data
file
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP03090996A
Other languages
English (en)
Other versions
JPH04303260A (ja
Inventor
聡 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP03090996A priority Critical patent/JP3111498B2/ja
Publication of JPH04303260A publication Critical patent/JPH04303260A/ja
Application granted granted Critical
Publication of JP3111498B2 publication Critical patent/JP3111498B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータを使用し
たデータ処理装置に於けるレコード検索方法に係り、特
に、レコード検索の高速化に関する。
【0002】
【従来の技術】一般的なデータ処理装置では、ディスク
等の外部記憶装置に構成された検索対象のファイルは、
内部的に2つのファイルによって構成されている。即
ち、図6に示すように、1つは、ユーザが作成したデー
タの実体が格納されるデータファイル100である。こ
のデータファイル100内のデータレコードは、ユーザ
がデータレコードを作成した順というような機械的な順
序で格納されいる。このような順序で格納されているデ
ータレコードを物理レコード102と呼んでいる。
【0003】もう1つのファイルは、データファイル1
00の中から或る順序でデータレコードを読み出すため
に使用されるインデックスファイル104である。この
インデックスファイル104には、機械的レコードの配
置106(物理レコード番号)とインデックスキー10
8とが対応付けて格納されている。インデックスキー1
08は、ファイル中の単一フィールドに対応している場
合と、複数のフィールドに対応している場合とがある。
【0004】このような構成に於いて、インデックスキ
ー108の値に対して条件を入力してデータレコードを
検索する場合、条件に合致してデータファイル100か
ら読み込まれるデータレコードが少ない時には、高速に
処理することができる。しかしながら、データファイル
100の構成によっては、物理レコード102の並び順
とインデックスキー108の並び順との相関関係が小さ
く、インデックスキー108の順番に読み出す場合は、
乱雑に配置されたデータレコードを飛び飛びに読まなけ
ればならないことがある。
【0005】一方、図7に示すように、ディスク上のデ
ータファイル100内のデータレコードをメモリ110
に読み込むような処理では、ブロッキングサイズと呼ば
れる処理系固有の読み出し量でデータ転送を行ない、デ
ータリードバッファ112に一旦格納するようになって
いる。
【0006】従って、データファイル100のサイズが
ブロックキングサイズより小さい場合や、インデックス
キーの順序で読み出す時の物理レコード102のちらば
りがブロックキングサイズ内に納まる場合には、検索処
理はメモリ110内の処理、つまりデータリードバッフ
ァ112内の検索処理となるため、高速処理が可能とな
る。
【0007】
【発明が解決しようとする課題】しかしながら、逆に、
物理レコード102がブロッキングサイズを越えて散ら
ばっている場合、ディスクからメモリ110のデータリ
ードバッファ112に転送されたデータレコードの大半
を無駄にすることになる。
【0008】また、検索条件によっては、物理レコード
102の順に全レコードを読出すよりディスクからの転
送が増えてしまい、インデックスとしての意味が無駄に
なってしまう場合があった。即ち、図7に示す状態で、
インデックスキー108が「00012」の値を持つデ
ータレコードを読み込もうとすると、ディスクから1ブ
ロッキングサイズ分のデータ転送が発生する。さらに、
その次のインデックスキー108が「00013」の値
を持つデータレコードを読み込もうとすると、元の1ブ
ロックを再度読み込まなければならない。
【0009】また、検索対象ファイルに対して、複数の
インデックスキーが指定されていて、或るインデックス
キーは物理レコード102の並び順と全く同じである
が、別のインデックスキーの並び順でレコードを読み込
む場合、ブロッキングサイズを越えた物理レコード10
2の読み込みが多発することがあるとする。このような
2つのインデックスキーに検索条件が指定されている場
合、従来の手法では、どちらが先に定義されたインデッ
クスキーかというような機械的な選択方法しかなかっ
た。従って、処理時間が短くて済むインデックスキーが
あるにもかかわらず、処理時間が多くなるインデックス
キーを使用してレコードの読み込みをしてしまう可能性
があった。
【0010】このような原因は、インデックスキーが指
定された場合には必ずそれを使用して検索し、また複数
のインデックスキーが指定された場合にはそれらを機械
的に選択して検索処理を行なうようにしているというこ
とにある。
【0011】してみれば、検索対象ファイル検索条件の
状況に応じて、インデックスキーの使用の可否を決定し
たり、複数のインデックスキーから最良のインデックス
キーを選択するようにすれば、ディスク等の外部記憶装
置からのデータの転送を最小にすることが可能となり、
検索処理を高速化することができることは明かである。
【0012】本発明の課題は、検索対象ファイル検索条
件の状況に応じて、インデックスキーの使用の可否を決
定したり、複数のインデックスキーから最良のインデッ
クスキーを選択することを可能とすることである。
【0013】
【課題を解決するための手段】本発明にかかるデータ検
索方法は、複数のデータフィールドからなるレコードを
記憶するデータファイルと、このデータファイルに記憶
されたレコードの複数のデータフィールドに対応するイ
ンデックスキーについて、各インデックスキーの値とこ
の値に関係するレコードの記憶位置とを各インデックス
キー毎に記憶するインデックスファイルとを有し、所定
サイズの読み込みブロック単位で上記データファイルの
レコードを読み出すデータ処理装置におけるレコード検
索方法であって、上記データファイルを上記所定サイズ
のブロック単位で読み込む際のブロック数を算出するブ
ロック数算出ステップと、複数のインデックスキーのそ
れぞれについて、指定された検索条件に該当するレコー
ドが、上記所定サイズのブロック単位で読み込まれる際
に何番目のブロックにあるかを上記インデックスファイ
ルより求め、このブロック情報に基づいて、上記データ
ファイルからのブロック読み出しの回数を示す分散値を
求める分散値算出ステップと、上記分散値算出ステップ
で求められた各インデックスキーについての分散値の最
小値が、上記ブロック数算出ステップで算出されたブロ
ック数を基準にして大きいか小さいかを判断する判断ス
テップと、上記判断ステップで分散値の最小値が大きい
と判断された場合には、インデックスキーによらずにデ
ータファイルのレコードを所定の順に読み出し、上記分
散値の最小値が小さいと判断された場合には、インデッ
クスキーを使用してデータファイルからレコードを読み
出すレコード読み出しステップとを具備することを特徴
とする。また本発明にかかるデータ処理装置は、複数の
データフィールドからなるレコードを記憶するデータフ
ァイルと、このデータファイルに記憶されたレコードの
複数のデータフィールドに対応するインデックスキーに
ついて、各インデックスキーの値とこの値に関係するレ
コードの記憶位置とを各インデックスキー毎に記憶する
インデックスファイルとを有し、レコード検索にあたり
所定サイズの読み込みブロック単位で上記データファイ
ルのレコードを読み出すデータ処理装置であって、上記
データファイルを上記所定サイズのブロック単位で読み
込む際のブロック数を算出するブロック数算出手段と、
複数のインデックスキーのそれぞれについて、指定され
た検索条件に該当するレコードが、上記所定サイズのブ
ロック単位で読み込まれる際に何番目のブロックにある
かを上記インデックスファイルより求め、このブロック
情報に基づいて、上記データファイルからのブロック読
み出しの回数を示す分散値を求める分散値算出手段と、
上記分散値算出手段で求められた各インデックスキーに
ついての分散値の最小値が、上記ブロック数算出手段で
算出されたブロック数を基準にして大きいか小さいかを
判断する判断手段と、上記判断手段で分散値の最小値が
大きいと判断された場合には、インデックスキーによら
ずにデータファイルのレコードを所定の順に読み出し、
上記分散値の最小値が小さいと判断された場合には、イ
ンデックスキーを使用してデータファイルからレコード
を読み出すレコード読み出し手段とを具備することを特
徴とする。
【0014】実施例を説明する前に、図1を用いて本発
明の処理の概要を説明する。本発明においては、データ
ファイルを所定サイズのブロック単位で読み込む際のブ
ロック数を算出しておいて、その後、複数のインデック
スキーのそれぞれについて、指定された検索条件に該当
するレコードが、所定サイズのブロック単位で読み込ま
れる際に何番目のブロックにあるかをインデックスファ
イルより求め(ステップS1)、このブロック情報に基
づいて、各インデックスキーについて、データファイル
からのブロック読み出しの回数を示す分散値を求め(ス
テップS2)、各インデックスキーについての分散値の
最小値が、ブロック数を基準にして大きいか小さいかを
判断し、この判断結果により、インデックスキーによら
ずにデータファイルのレコードを所定の順に読み出す
か、あるいはインデックスキーを使用してデータファイ
ルからレコードを読み出す(ステップS3)ようにした
ものである。
【0015】
【実施例】以下、図2乃至図5を参照して、本発明の一
実施例を説明する。図2は、実施例のレコード検索方法
が適用されたデータ処理装置10のブロック構成図を示
すもので、同図に於いて、12は全体の制御を司るCP
Uである。14は検索対象ファイル16を構成するディ
スク等の外部記憶装置である。検索対象ファイル16
は、インデックスファイル18とデータファイル20よ
り成っている。22はデータリードバッファ24を有す
るメモリである。このメモリ22はさらに、インデック
スリードバッファ26と、物理レコード分散値格納領域
28を有している。そして、30はキーボード及びディ
スプレィで成る入出力装置である。
【0016】このデータ処理装置10は、外部記憶装置
14内に存在する検索対象ファイル16に対して、入出
力装置30から検索条件を入力し、CPU12の処理に
よって検索を行なうものである。この検索処理実行時に
は、メモリ22内の検索処理を行なうための作業領域と
してのデータリードバッファ24,インデックスリード
バッファ26にそれぞれ検索対象ファイル16内のデー
タファイル20とインデックスファイル18のコピーが
作成される。また、メモリ22内の物理レコード分散値
格納領域28には、インデックスファイル18に登録さ
れているインデックスキー毎に物理レコードの分散値が
格納される。
【0017】次に、このような構成のデータ処理装置1
0に於ける検索動作を、図3のフローチャートを参照し
て説明する。先ず、ファイル管理情報の取得を行なう
(ステップS11)。即ち、処理系に固有な外部記憶装
置14に対する入出力転送サイズ(ブロッキングサイ
ズ)と、ファイルに固有な1レコードの長さ(レコード
レングス)と、ファイルが確保している最大レコードの
数(レコードカウント)とを取得し、次式に従って、フ
ァイルが確保しているブロック数を算出する。即ち、
「ファイルブロック数=(レコードカウント×レコード
レングス)/ブロックキングサイズ」。
【0018】次に、検索条件を入力し(ステップS1
2)、インデックスキーに対する条件フィールドの抽出
を行なう(ステップS13)。即ち、キーボード等の入
出力装置30より検索条件を入力する。そして、この入
力された検索条件をもとに、インデックスキーで指定さ
れているフィールドに対する条件を抽出する。
【0019】ここで、インデックスキーによる検索条件
が存在するか否かを判定する(ステップS14)。そし
て、検索条件が存在しない場合には、インデックスキー
を使用せずに物理レコード順に全レコードを読み込み
(ステップS15)、読み込んだレコードに対して使用
したインデックスキー以外の条件判定を行なう(ステッ
プS16)。即ち、インデックスキー指定されているフ
ィールドに条件の指定が無い場合は、全てのレコードを
読み込んで検索条件の判定を行なう以外に手段がないの
で、ステップS14,S15,S16の順序で処理が行
なわれる。
【0020】また、インデックスキーによる検索条件が
存在する場合には、インデックスキー毎に物理レコード
の分散値を求める(ステップS17)。即ち、インデッ
クスファイル18内には、インデックスキー毎に、図4
のようにしてインデックスキーの値32と、その値を持
つ物理レコードのレコード番号34が格納されている。
図4の例に於いては、ファイル中の3つのフィールドに
対してインデックスが指定されていて、「インデックス
キー1」36としては「110以上120以下」、「イ
ンデックスキー2」38としては「01345以上01
350以下」、「インデックスキー340」としては
「aaa以上aag以下」という検索条件が指定されて
いる場合のインデックスファイル18とデータファイル
20を示す。
【0021】このインデックスファイル18を参照し
て、検索条件として指定されているインデックスキーの
物理レコードの分散値を求める。ここで、物理レコード
の分散値とは、指定されたインデックスキーの範囲のレ
コードを読み込むために必要な、外部記憶装置14から
のブロックデータ転送回数を表わしていて、次の方法に
より求める。
【0022】即ち、インデックスファイル18中の物理
レコード番号34から、対象となるレコードがデータフ
ァイル20中の何番目のブロックに存在するかを、次式
により求める。 ブロック番号=int{(物理レコード番号−1)×レ
コードレングス/ブロッキングサイズ}+1 但しここで、int{ }は小数点以下を切り捨てる関
数であることを示す。
【0023】図5の(A)乃至(C)に、前記各インデ
ックス1〜3のブロック番号を示す。さらに、前レコー
ドの存在するブロック番号と現レコードの存在するブロ
ック番号とを比較し、異なっていた場合は、ブロックデ
ータの転送回数に「1」を加える。但し、前レコードが
存在しない場合(検索条件に合致する先頭レコード)
は、無条件にブロックデータの転送回数に「1」をセッ
トする。図4のファイル例の場合の転送回数は図5の
(A)乃至(C)に示す。
【0024】そして、各インデックスキーのブロックデ
ータの転送回数により、インデックスキー使用の可否及
び最良のインデックスキーを決定する(ステップS1
8,S19)。
【0025】即ち先ず、使用可能なインデックスキーの
ブロックデータの転送回数を比較し、最も小さな値を持
つインデックスキーを調べる。
【0026】ここで、ブロックデータの転送回数のもっ
とも小さなものが、上記ステップS11で算出したファ
イルブロック数より大きくなっている場合は(ステップ
S18)、全レコードを読み込む時より、インデックス
キーを使用してレコードを読み込むほうが、外部記憶装
置14からのブロックデータの転送回数が多くなるた
め、上記ステップS15に分岐して、物理レコード順に
全体をリードし、検索条件の判定を行なう。
【0027】逆に、インデックスキーのブロックデータ
の転送回数がファイルブロック数(図3の例では
「3」)より小さい場合は、インデックスキーを使用し
て、インデックスキーの条件に合致するレコードのみを
読み込み(ステップS19)、上記ステップS16に進
んで、この読み込んだレコードに対して使用したインデ
ックスキー以外の条件判定を行なう。
【0028】図5の例では、「インデックスキー2」に
対する検索はインデックスキーを使用してレコードを読
み込み、「インデックスキー1」又は「インデックスキ
ー3」に対する検索は、物理レコード順に読み込む。
【0029】なお、上記実施例では、上記ステップS1
8に於いてインデックスキーのブロックデータ転送回数
がファイルブロック数より小さい場合にステップS19
に進むようにしたが、ファイルブロック数以下の場合と
しても良く、その他、特定の値を基準に判定するように
しても良い。
【0030】
【発明の効果】本発明によれば、検索対象ファイル検索
条件の状況に応じて、インデックスキーの使用の可否を
決定したり、複数のインデックスキーから最良のインデ
ックスキーを選択できるようになる。従って、ディスク
等の外部記憶装置からのデータの転送を最小にすること
が可能となり、検索処理を高速化することができる。
【図面の簡単な説明】
【図1】本発明のフローチャートである。
【図2】実施例のレコード検索方法の適用されたデータ
処理装置のブロック構成図である。
【図3】実施例の検索動作を説明するためのフローチャ
ートである。
【図4】インデックスキーの値とデータファイル内のデ
ータレコードとの関係を示す図である。
【図5】(A)は「インデックスキー1」に於ける分散
値の算出例を示す図、(B)は「インデックスキー2」
に於ける分散値の算出例を示す図、(C)は「インデッ
クスキー3」に於ける分散値の算出例を示す図である。
【図6】従来のインデックスファイルとデータファイル
のそれぞれの記憶内容の関係を示す図である。
【図7】従来のレコード検索方法を説明するためのイン
デックスファイルとデータファイルとメモリとの関係を
示す図である。
【符号の説明】
12…CPU、14…外部記憶装置、16…検索対象フ
ァイル16、18…インデックスファイル、20…デー
タファイル、22…メモリ、24…データリードバッフ
ァ、26…インデックスリードバッファ、28…物理レ
コード分散値格納領域、30…入出力装置。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数のデータフィールドからなるレコー
    ドを記憶するデータファイルと、このデータファイル
    記憶されたレコードの複数のデータフィールドに対応す
    るインデックスキーについて、各インデックスキーの値
    とこの値に関係するレコードの記憶位置とを各インデッ
    クスキー毎に記憶するインデックスファイルとを有し、
    所定サイズの読み込みブロック単位で上記データファイ
    ルのレコードを読み出すデータ処理装置におけるレコー
    ド検索方法であって、上記データファイルを上記所定サイズのブロック単位で
    読み込む際のブロック数を算出するブロック数算出ステ
    ップと、 複数のインデックスキーのそれぞれについて、指定され
    た検索条件に該当するレコードが、上記所定サイズのブ
    ロック単位で読み込まれる際に何番目のブロックにある
    かを上記インデックスファイルより求め、このブロック
    情報に基づいて、上記データファイルからのブロック読
    み出しの回数を示す分散値を求める分散値算出ステップ
    と、 上記分散値算出ステップで求められた各インデックスキ
    ーについての分散値の最小値が、上記ブロック数算出ス
    テップで算出されたブロック数を基準にして大きいか小
    さいかを判断する判断ステップと、 上記判断ステップで分散値の最小値が大きいと判断され
    た場合には、インデックスキーによらずにデータファイ
    ルのレコードを所定の順に読み出し、上記分散値の最小
    値が小さいと判断された場合には、インデックスキーを
    使用してデータファイルからレコードを読み出すレコー
    ド読み出しステップ とを具備することを特徴とするレコ
    ード検索方法。
  2. 【請求項2】 複数のデータフィールドからなるレコー
    ドを記憶するデータファイルと、このデータファイルに
    記憶されたレコードの複数のデータフィールドに対応す
    るインデックスキーについて、各インデックスキーの値
    とこの値に関係するレコードの記憶位置とを各インデッ
    クスキー毎に記憶するインデックスファイルとを有し、
    レコード検索にあたり所定サイズの読み込みブロック単
    位で上記データファイルのレコードを読み出すデータ処
    理装置であって、 上記データファイルを上記所定サイズのブロック単位で
    読み込む際のブロック 数を算出するブロック数算出手段
    と、 複数のインデックスキーのそれぞれについて、指定され
    た検索条件に該当するレコードが、上記所定サイズのブ
    ロック単位で読み込まれる際に何番目のブロックにある
    かを上記インデックスファイルより求め、このブロック
    情報に基づいて、上記データファイルからのブロック読
    み出しの回数を示す分散値を求める分散値算出手段と、 上記分散値算出手段で求められた各インデックスキーに
    ついての分散値の最小値が、上記ブロック数算出手段で
    算出されたブロック数を基準にして大きいか小さいかを
    判断する判断手段と、 上記判断手段で分散値の最小値が大きいと判断された場
    合には、インデックスキーによらずにデータファイルの
    レコードを所定の順に読み出し、上記分散値の最小値が
    小さいと判断された場合には、インデックスキーを使用
    してデータファイルからレコードを読み出すレコード読
    み出し手段とを具備することを特徴とするデータ処理装
    置。
JP03090996A 1991-03-30 1991-03-30 レコード検索方法及びデータ処理装置 Expired - Fee Related JP3111498B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP03090996A JP3111498B2 (ja) 1991-03-30 1991-03-30 レコード検索方法及びデータ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03090996A JP3111498B2 (ja) 1991-03-30 1991-03-30 レコード検索方法及びデータ処理装置

Publications (2)

Publication Number Publication Date
JPH04303260A JPH04303260A (ja) 1992-10-27
JP3111498B2 true JP3111498B2 (ja) 2000-11-20

Family

ID=14014118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03090996A Expired - Fee Related JP3111498B2 (ja) 1991-03-30 1991-03-30 レコード検索方法及びデータ処理装置

Country Status (1)

Country Link
JP (1) JP3111498B2 (ja)

Also Published As

Publication number Publication date
JPH04303260A (ja) 1992-10-27

Similar Documents

Publication Publication Date Title
US5357431A (en) Character string retrieval system using index and unit for making the index
US5293616A (en) Method and apparatus for representing and interrogating an index in a digital memory
US9727308B2 (en) Sorting multiple records of data using ranges of key values
JPH0225536B2 (ja)
JP2005267600A5 (ja)
US20080215566A1 (en) Method for using one-dimensional dynamics in assessing the similarity of sets of data
JPH05189490A (ja) 関数結果をセーブし検索する方法と装置
US5398335A (en) Virtually updating data records by assigning the update fractional addresses to maintain an ordinal relationship without renumbering original records
JP3111498B2 (ja) レコード検索方法及びデータ処理装置
JP3552318B2 (ja) 文書検索方法およびシステム
JPS6127771B2 (ja)
JPH06251076A (ja) データ・ベース検索装置および方法
JPH0782429B2 (ja) 複数ファイルのマージ方法
JPH04340163A (ja) キーワード検索方式
JP3035980B2 (ja) 電子フアイリング装置
JP2682448B2 (ja) 索引検索方式
JP2789670B2 (ja) 西暦世紀年代識別方法および装置
JPH04230576A (ja) 項目選択装置
JPH04257062A (ja) ハッシュキューを用いるデータ処理装置
JPS63150724A (ja) デ−タアクセス処理方式
JP2852253B2 (ja) データ検索装置
JPS60225938A (ja) 情報検索方式
JPH04559A (ja) データ検索方式
JPH04250568A (ja) レコード検索装置
JPH01228022A (ja) 二次元データ格納方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees