JP2926803B2 - ソート処理方法 - Google Patents
ソート処理方法Info
- Publication number
- JP2926803B2 JP2926803B2 JP31673489A JP31673489A JP2926803B2 JP 2926803 B2 JP2926803 B2 JP 2926803B2 JP 31673489 A JP31673489 A JP 31673489A JP 31673489 A JP31673489 A JP 31673489A JP 2926803 B2 JP2926803 B2 JP 2926803B2
- Authority
- JP
- Japan
- Prior art keywords
- record
- records
- key
- storage area
- predetermined
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の詳細な説明】 〔概 要〕 計算機における、ソート処理に関し、 外部ソートの場合に、クイックソート法を有効に利用
して、中間ソート結果のレコード列の長さを主記憶領域
に一度に入るレコード数より長くすることを効率よくで
きるようにしたソート処理方法を目的とし、 源レコード群のレコードを、該レコードごとに定まる
キーの値の、所定の強さの順に従う所定のキー順にソー
トする処理の場合に、該原レコード群の所定個数以内の
該レコードを所定の主記憶領域へ読み込み、該読み込ん
だレコードのうち、所定の基準値より強くないキーのレ
コードのみを該キー順に並べて、直前に作業記憶領域に
出力したレコード列に追加して連結するように出力し、
該基準値より強くないキーのレコードが無い場合には、
該主記憶領域のすべてのレコードを該キー順に並べて、
新たなレコード列として該作業記憶領域に出力し、該作
業記憶域に出力したレコードの最も弱いキーを新たに該
基準値とし、所定の初期値を該基準値として開始して、
該原レコード群のすべてのレコードについて、順次以上
の処理を反復した後、該作業記憶域に出力した該レコー
ド列について、所定のマージ処理を実行するように構成
する。
して、中間ソート結果のレコード列の長さを主記憶領域
に一度に入るレコード数より長くすることを効率よくで
きるようにしたソート処理方法を目的とし、 源レコード群のレコードを、該レコードごとに定まる
キーの値の、所定の強さの順に従う所定のキー順にソー
トする処理の場合に、該原レコード群の所定個数以内の
該レコードを所定の主記憶領域へ読み込み、該読み込ん
だレコードのうち、所定の基準値より強くないキーのレ
コードのみを該キー順に並べて、直前に作業記憶領域に
出力したレコード列に追加して連結するように出力し、
該基準値より強くないキーのレコードが無い場合には、
該主記憶領域のすべてのレコードを該キー順に並べて、
新たなレコード列として該作業記憶領域に出力し、該作
業記憶域に出力したレコードの最も弱いキーを新たに該
基準値とし、所定の初期値を該基準値として開始して、
該原レコード群のすべてのレコードについて、順次以上
の処理を反復した後、該作業記憶域に出力した該レコー
ド列について、所定のマージ処理を実行するように構成
する。
本発明は、計算機におけるソート処理、特にレコード
数の多い場合のソート処理に、クイックソート法を有効
に利用できるようにしたソート処理方法に関する。
数の多い場合のソート処理に、クイックソート法を有効
に利用できるようにしたソート処理方法に関する。
公知のように、計算機におけるソート処理は、原レコ
ード群のレコードを、レコードごとに定まるキーの値に
よって、キーの所定の強さの順に並べる処理であり、主
記憶に読み込んだレコードをソートする、いわゆる内部
ソートの場合には、クイックソート法(情報処理学会編
「情報処理ハンドブック」第60頁参照)が比較的高速に
処理できる方法として知られている。
ード群のレコードを、レコードごとに定まるキーの値に
よって、キーの所定の強さの順に並べる処理であり、主
記憶に読み込んだレコードをソートする、いわゆる内部
ソートの場合には、クイックソート法(情報処理学会編
「情報処理ハンドブック」第60頁参照)が比較的高速に
処理できる方法として知られている。
レコード数が比較的多量になると、すべてのレコード
を主記憶に一度に読み込んで処理することができなくな
るので、いわゆる外部ソートが必要になる。外部ソート
では、例えば第3図に示す様に磁気ディスク等の外部記
憶装置に格納されたファイルをなす原レコード列1をソ
ート処理部2が分割して、主記憶領域3に読み込んで何
等かの方法で部分的にソートし、その中間ソート結果の
レコード列を外部記憶装置の作業記憶領域4へ順次出力
する。
を主記憶に一度に読み込んで処理することができなくな
るので、いわゆる外部ソートが必要になる。外部ソート
では、例えば第3図に示す様に磁気ディスク等の外部記
憶装置に格納されたファイルをなす原レコード列1をソ
ート処理部2が分割して、主記憶領域3に読み込んで何
等かの方法で部分的にソートし、その中間ソート結果の
レコード列を外部記憶装置の作業記憶領域4へ順次出力
する。
そのようにして一般に複数本生成される中間レコード
列5を、次にマージ処理部6が適当な方法でマージ処理
することにより、所要のキー順の1本の出力レコード列
7に併合するという手順がとられる。
列5を、次にマージ処理部6が適当な方法でマージ処理
することにより、所要のキー順の1本の出力レコード列
7に併合するという手順がとられる。
このマージ処理では、例えばソートされた全レコード
列から強いキーの各レコードを順次取り出してキー順に
並べる必要があるので、マージ処理を高速化するには、
ソートされたレコード列をできるだけ長い列にして、列
数を少なくすることが望ましい。
列から強いキーの各レコードを順次取り出してキー順に
並べる必要があるので、マージ処理を高速化するには、
ソートされたレコード列をできるだけ長い列にして、列
数を少なくすることが望ましい。
一方、この中間レコード列を生成するためには、前記
のクイックソート法を使用すれば高速に処理できるが、
前記の通りこの方法で効率よく処理できるのは主記憶に
一度に読み取ることのできるレコード数の範囲に限られ
るので、ソート結果のレコード列の長さは主記憶領域の
大きさに制限されて一般に比較的短くなり、従って中間
レコード列の列数が多くなって、マージ処理の処理量が
増大してしまうという問題がある。
のクイックソート法を使用すれば高速に処理できるが、
前記の通りこの方法で効率よく処理できるのは主記憶に
一度に読み取ることのできるレコード数の範囲に限られ
るので、ソート結果のレコード列の長さは主記憶領域の
大きさに制限されて一般に比較的短くなり、従って中間
レコード列の列数が多くなって、マージ処理の処理量が
増大してしまうという問題がある。
本発明は、外部ソートの場合に、クイックソート法を
有効に利用して、中間ソート結果のレコード列の長さを
主記憶領域に一度に入るレコード数より長くすることを
効率よくできるようにしたソート処理方法を目的とす
る。
有効に利用して、中間ソート結果のレコード列の長さを
主記憶領域に一度に入るレコード数より長くすることを
効率よくできるようにしたソート処理方法を目的とす
る。
第1図は、本発明の構成を示す処理の流れ図である。
図はソート処理方法の構成を示し、原レコード群のレ
コードを、該レコードごとに定まるキーの値の、所定の
強さの順に従う所定のキー順にソートする処理の場合
に、処理ステップ10で所定の初期設定の後、処理ステッ
プ11で該原レコード群の所定個数以内の該レコードを所
定の主記憶領域へ読み込み、処理ステップ12、13で該読
み込んだレコードのうち、所定の基準値より強くないキ
ーのレコードのみを該キー順に並べて、直前に作業記憶
領域に出力したレコード列に追加して連結するように出
力し、又処理ステップ12で該基準値より強くないキーの
レコードが無い場合には、処理ステップ14で該主記憶領
域のすべてのレコードを該キー順に並べて、新たなレコ
ード列として該作業記憶領域に出力し、処理ステップ15
で該作業記憶域に出力したレコードの最も弱いキーを新
たに該基準値とし、所定の初期値を該基準値として開始
して、処理ステップ16で識別して該原レコード群のすべ
てのレコードについて、順次以上の処理を反復した後、
処理ステップ17で該作業記憶域に出力した該レコード列
について、所定のマージ処理を実行する。
コードを、該レコードごとに定まるキーの値の、所定の
強さの順に従う所定のキー順にソートする処理の場合
に、処理ステップ10で所定の初期設定の後、処理ステッ
プ11で該原レコード群の所定個数以内の該レコードを所
定の主記憶領域へ読み込み、処理ステップ12、13で該読
み込んだレコードのうち、所定の基準値より強くないキ
ーのレコードのみを該キー順に並べて、直前に作業記憶
領域に出力したレコード列に追加して連結するように出
力し、又処理ステップ12で該基準値より強くないキーの
レコードが無い場合には、処理ステップ14で該主記憶領
域のすべてのレコードを該キー順に並べて、新たなレコ
ード列として該作業記憶領域に出力し、処理ステップ15
で該作業記憶域に出力したレコードの最も弱いキーを新
たに該基準値とし、所定の初期値を該基準値として開始
して、処理ステップ16で識別して該原レコード群のすべ
てのレコードについて、順次以上の処理を反復した後、
処理ステップ17で該作業記憶域に出力した該レコード列
について、所定のマージ処理を実行する。
以上の処理方法により、主記憶領域に読み込むレコー
ドのキーに、直前に出力してある作業記憶領域のレコー
ドのキーより強くないキーがある場合には、そのような
キーのレコードが読み込みレコードに含まれ続けている
限り、それらのレコードは作業記憶領域上で1本のレコ
ード列につながれるので、主記憶領域の大きさに関わら
ず、中間レコード列を長くすることができる。
ドのキーに、直前に出力してある作業記憶領域のレコー
ドのキーより強くないキーがある場合には、そのような
キーのレコードが読み込みレコードに含まれ続けている
限り、それらのレコードは作業記憶領域上で1本のレコ
ード列につながれるので、主記憶領域の大きさに関わら
ず、中間レコード列を長くすることができる。
従って、原レコード列をNレコードの大きさ、主記憶
領域をGレコードの大きさとした場合に、原レコード列
のレコードが完全にキーの逆順に並んでいる最悪ケース
では、中間レコード列の列数は、従来と同様にN/G本と
なるが、キーの正順に並んでいる場合には1本(即ち中
間レコード列が既にマージ処理済みの状態)になり、そ
の他の場合は両者の中間の値となる。しかし実用上で
は、一般に原レコード列が予め或程度のキーの正順に並
んでいる場合が多いので、通常はN/G本より相当小さい
値になることが期待できる。
領域をGレコードの大きさとした場合に、原レコード列
のレコードが完全にキーの逆順に並んでいる最悪ケース
では、中間レコード列の列数は、従来と同様にN/G本と
なるが、キーの正順に並んでいる場合には1本(即ち中
間レコード列が既にマージ処理済みの状態)になり、そ
の他の場合は両者の中間の値となる。しかし実用上で
は、一般に原レコード列が予め或程度のキーの正順に並
んでいる場合が多いので、通常はN/G本より相当小さい
値になることが期待できる。
第1図の処理ステップ10〜16は、第3図のソート処理
部2の本発明による処理の流れであり、先ず処理ステッ
プ10の初期設定により、レコードを読み込む主記憶領域
3を所定の大きさに取って、領域及び必要な制御情報等
を初期値に設定し、又基準値に所定の初期値を設定す
る。
部2の本発明による処理の流れであり、先ず処理ステッ
プ10の初期設定により、レコードを読み込む主記憶領域
3を所定の大きさに取って、領域及び必要な制御情報等
を初期値に設定し、又基準値に所定の初期値を設定す
る。
基準値の初期値には、キーの取り得る任意の値を使っ
てよいが、例えばキーの可能な最弱値を初期値とする。
てよいが、例えばキーの可能な最弱値を初期値とする。
以上の準備の後、ソート処理を開始し、処理ステップ
11で原レコード列1の先頭から順に、主記憶領域3に入
るだけのレコードを読み込み、処理ステップ12で例えば
基準値より強いキーのレコードと強くないキーのレコー
ドに分類する。
11で原レコード列1の先頭から順に、主記憶領域3に入
るだけのレコードを読み込み、処理ステップ12で例えば
基準値より強いキーのレコードと強くないキーのレコー
ドに分類する。
その結果基準値より強くない(即ち基準値と等しいか
又は基準値より弱い)キーのレコードがあった場合に
は、処理ステップ13でそれら基準値より強くないキーの
レコードのみをソートして、そのレコード列を、作業記
憶領域4の直前に出力した中間レコード列5を延長する
ように出力する。
又は基準値より弱い)キーのレコードがあった場合に
は、処理ステップ13でそれら基準値より強くないキーの
レコードのみをソートして、そのレコード列を、作業記
憶領域4の直前に出力した中間レコード列5を延長する
ように出力する。
基準値より強いレコードのみの場合には、主記憶領域
3にある全レコード(最初を除き、一般には前に出力し
ないで残したレコードと、今回読み込んだレコード)を
ソートしたレコード列を、新たな(前に出力レコード列
とは別個の)レコード列として作業記憶領域4へ出力す
る。なお、最初の処理ではこのバスで中間レコード列が
出力される。
3にある全レコード(最初を除き、一般には前に出力し
ないで残したレコードと、今回読み込んだレコード)を
ソートしたレコード列を、新たな(前に出力レコード列
とは別個の)レコード列として作業記憶領域4へ出力す
る。なお、最初の処理ではこのバスで中間レコード列が
出力される。
以上の何れか一方の処理の後、今回出力したレコード
のキーの中で最も弱いキーの値(出力したレコード列の
末尾のレコードのキー値)を、処理ステップ15で新たな
基準値に設定する。次に処理ステップ16で識別して、原
レコード列1に未処理のレコードがあれば処理ステップ
11に戻り、今出力して空いたレコード数だけ補充するよ
うに次のレコードを主記憶領域3へ読み込み、新たな基
準値によって前記の処理を繰り返す。
のキーの中で最も弱いキーの値(出力したレコード列の
末尾のレコードのキー値)を、処理ステップ15で新たな
基準値に設定する。次に処理ステップ16で識別して、原
レコード列1に未処理のレコードがあれば処理ステップ
11に戻り、今出力して空いたレコード数だけ補充するよ
うに次のレコードを主記憶領域3へ読み込み、新たな基
準値によって前記の処理を繰り返す。
以上の処理により、原レコード列1の全レコードを処
理すると、作業記憶領域4には処理ステップ14を通った
数だけの本数の中間レコード列ができるので、マージ処
理部6は処理ステップ17によりそれらの中間レコード列
についてマージ処理を実行し、出力レコード列7を出力
する。
理すると、作業記憶領域4には処理ステップ14を通った
数だけの本数の中間レコード列ができるので、マージ処
理部6は処理ステップ17によりそれらの中間レコード列
についてマージ処理を実行し、出力レコード列7を出力
する。
第2図は以上の処理を簡単なキーの例によって説明す
る図であり、図の数字は各レコードのキーの値でキー値
の昇順にソートする例を示し、左から3列は主記憶領域
における、読み込まれたキーの状態、それを基準値で分
類した状態、及び分類した結果の全部又は下半部をソー
トした状態をそれぞれ示し、ソートしたレコード列を出
力して生成される、作業記憶領域上の中間レコード列を
右端列に示してある。
る図であり、図の数字は各レコードのキーの値でキー値
の昇順にソートする例を示し、左から3列は主記憶領域
における、読み込まれたキーの状態、それを基準値で分
類した状態、及び分類した結果の全部又は下半部をソー
トした状態をそれぞれ示し、ソートしたレコード列を出
力して生成される、作業記憶領域上の中間レコード列を
右端列に示してある。
第2図(a)は最初の7レコードを処理する例で、基
準値を最強のキー値例えば「99」に初期設定して処理
し、キー値がすべて基準値より強いので、全レコードを
ソートして中間レコード列として出力する。
準値を最強のキー値例えば「99」に初期設定して処理
し、キー値がすべて基準値より強いので、全レコードを
ソートして中間レコード列として出力する。
このとき最も弱いキーは「7」であったので、基準値
を「7」にし、(b)の左端列のように次の7レコード
を読み込む。基準値「7」でその前後のキー値に分類す
ると第2列のようになるので、キー値「7」より強くな
いキー「10、8、9」がソートされ、右端列に示すよう
に前に出力した中間レコード列につながれる。
を「7」にし、(b)の左端列のように次の7レコード
を読み込む。基準値「7」でその前後のキー値に分類す
ると第2列のようになるので、キー値「7」より強くな
いキー「10、8、9」がソートされ、右端列に示すよう
に前に出力した中間レコード列につながれる。
次は(c)に示す様に、空きになった3レコードだけ
主記憶領域に読み込まれ、基準値は前出力レコードの最
も弱いキー「10」にして処理される。この例では、すべ
ての基準値「10」より強いキーになってしまったので、
全レコードをソートして、新たな第2の中間レコード列
にする。なお、もし読み込んだ3レコードの中に、キー
が「10」より強くない(即ち10以上のキーの)レコード
が1個でもあった場合には、(b)の場合のようにそれ
らのレコードが第1の中間レコード列につながれ、未だ
第2の中間レコード列は作られない。
主記憶領域に読み込まれ、基準値は前出力レコードの最
も弱いキー「10」にして処理される。この例では、すべ
ての基準値「10」より強いキーになってしまったので、
全レコードをソートして、新たな第2の中間レコード列
にする。なお、もし読み込んだ3レコードの中に、キー
が「10」より強くない(即ち10以上のキーの)レコード
が1個でもあった場合には、(b)の場合のようにそれ
らのレコードが第1の中間レコード列につながれ、未だ
第2の中間レコード列は作られない。
以上の説明から明らかなように本発明によれば、計算
機における、ソート処理において、クイックソート法を
有効に利用して、中間ソート結果のレコード列の長さを
主記憶領域に一度に入るレコード数より長くすることが
効率よくできるので、その後のマージ処理の時間が短縮
されて全体の処理効率を改善するという著しい工業的効
果がある。
機における、ソート処理において、クイックソート法を
有効に利用して、中間ソート結果のレコード列の長さを
主記憶領域に一度に入るレコード数より長くすることが
効率よくできるので、その後のマージ処理の時間が短縮
されて全体の処理効率を改善するという著しい工業的効
果がある。
第1図は本発明の構成を示す処理の流れ図、 第2図は処理例の説明図、 第3図はソート処理システムの構成例のブロック図であ
る。 図において、 1は原レコード列、2はソート処理部、 3は主記憶領域、4は作業記憶領域、 5は中間レコード列、6はマージ処理部、 7は出力レコード列、10〜17は処理ステップ を示す。
る。 図において、 1は原レコード列、2はソート処理部、 3は主記憶領域、4は作業記憶領域、 5は中間レコード列、6はマージ処理部、 7は出力レコード列、10〜17は処理ステップ を示す。
Claims (1)
- 【請求項1】原レコード群のレコードを、該レコードご
とに定まるキーの値の、所定の強さの順に従う所定のキ
ー順にソートする処理の場合に、 該原レコード群の所定個数以内の該レコードを所定の主
記憶領域へ読み込み(11)、 該読み込んだレコードのうち、所定の基準値より強くな
いキーのレコードのみを該キー順に並べて、直前に作業
記憶領域に出力したレコード列に追加して連結するよう
に出力し(12,13)、 該基準値より強くないキーのレコードが無い場合には、
該主記憶領域のすべてのレコードを該キー順に並べて、
新たなレコード列として該作業記憶領域に出力し(12,1
4)、 該作業記憶域に出力したレコードの最も弱いキーを新た
に該基準値とし(15)、 所定の初期値を該基準値として開始して、該原レコード
群のすべてのレコードについて、順次以上の処理を反復
した後(10,16)、該作業記憶域に出力した該レコード
列について、所定のマージ処理を実行する(17)ことを
特徴とするソート処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31673489A JP2926803B2 (ja) | 1989-12-06 | 1989-12-06 | ソート処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31673489A JP2926803B2 (ja) | 1989-12-06 | 1989-12-06 | ソート処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03176732A JPH03176732A (ja) | 1991-07-31 |
JP2926803B2 true JP2926803B2 (ja) | 1999-07-28 |
Family
ID=18080310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31673489A Expired - Fee Related JP2926803B2 (ja) | 1989-12-06 | 1989-12-06 | ソート処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2926803B2 (ja) |
-
1989
- 1989-12-06 JP JP31673489A patent/JP2926803B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH03176732A (ja) | 1991-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4817036A (en) | Computer system and method for data base indexing and information retrieval | |
JPH02178730A (ja) | 分割法を用いた内部ソート方式 | |
JPH0666050B2 (ja) | ソート処理方法 | |
JP3515810B2 (ja) | ソート処理方法および装置 | |
JP2926803B2 (ja) | ソート処理方法 | |
JPS59121436A (ja) | デ−タ群のソ−ト方法 | |
JP3534471B2 (ja) | マージソート方法及びマージソート装置 | |
JP2923952B2 (ja) | マージ処理方法 | |
JPS6266326A (ja) | 日本語デ−タ整列処理方式 | |
JPH03202934A (ja) | データ処理装置 | |
JP2596332B2 (ja) | データ組合せ抽出方法およびその装置 | |
JPH1139344A (ja) | 2次元配列コードを用いた文字列検索方法 | |
JP2921045B2 (ja) | インデックス生成方式 | |
JPH0436415B2 (ja) | ||
JPH11306183A (ja) | データベース検索システム | |
JPH0452967A (ja) | 集合ファイルに対する論理積演算処理方式 | |
JPH03216730A (ja) | 電子計算機 | |
JPH0145648B2 (ja) | ||
JPH05241785A (ja) | ソート処理方式 | |
JPH09330322A (ja) | データ検索装置 | |
JPS63149728A (ja) | 索引生成方式 | |
JP2696832B2 (ja) | 情報検索回路 | |
JPH02206829A (ja) | レコード群ソート方法 | |
JPH086761A (ja) | ソート処理装置及びソート処理方法 | |
JPS62212726A (ja) | インデツクスキー圧縮処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |