JPH0855138A - 関係データベースの質問を最適化する方法 - Google Patents
関係データベースの質問を最適化する方法Info
- Publication number
- JPH0855138A JPH0855138A JP7160778A JP16077895A JPH0855138A JP H0855138 A JPH0855138 A JP H0855138A JP 7160778 A JP7160778 A JP 7160778A JP 16077895 A JP16077895 A JP 16077895A JP H0855138 A JPH0855138 A JP H0855138A
- Authority
- JP
- Japan
- Prior art keywords
- question
- group
- join
- grouping
- tree
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】 グループ・バイ演算子を持つ関係データベー
スの質問を最適化する方法および装置を提供する。 【構成】 グループ・バイ演算子をルートに持つ質問を
受け取り、上記質問に対し、内部の各結合節に先行して
グループ・バイ演算子を置くことを考慮した複数の実行
計画を生成し、上記複数の実行計画に対して費用を見積
もり、見積もられた費用が最も低い実行計画を選択する
ことからなる。この結果、効率良く動作することができ
る、内部の節にグループ・バイ演算子を持つ最適の実行
計画を選択することができる。
スの質問を最適化する方法および装置を提供する。 【構成】 グループ・バイ演算子をルートに持つ質問を
受け取り、上記質問に対し、内部の各結合節に先行して
グループ・バイ演算子を置くことを考慮した複数の実行
計画を生成し、上記複数の実行計画に対して費用を見積
もり、見積もられた費用が最も低い実行計画を選択する
ことからなる。この結果、効率良く動作することができ
る、内部の節にグループ・バイ演算子を持つ最適の実行
計画を選択することができる。
Description
【0001】
【産業上の利用分野】本発明は、データベース質問を最
適化する手法、具体的には、グループ・バイ演算子すな
わちグループ化演算子を持つ質問を最適化する方法およ
び装置に関する。
適化する手法、具体的には、グループ・バイ演算子すな
わちグループ化演算子を持つ質問を最適化する方法およ
び装置に関する。
【0002】
【従来の技術】データベースの性能は、主に、データベ
ース・システムの質問実行を最適化する能力に依存す
る。データベース質問の実行は、その質問を、データベ
ース・システムがより能率的に実行できる形に置き換え
る前処理を行うことによって、最適化できる。最適化処
理は、最も効率の良い実行計画を選択する。
ース・システムの質問実行を最適化する能力に依存す
る。データベース質問の実行は、その質問を、データベ
ース・システムがより能率的に実行できる形に置き換え
る前処理を行うことによって、最適化できる。最適化処
理は、最も効率の良い実行計画を選択する。
【0003】従来の手法による1つの問題は、それらの
手法が、グループ・バイ(group-by)演算子を持つ質問
を十分に最適化できなかったことである。従来の手法
は、結合演算を全て評価した後でグループ・バイ演算を
実行する。例えば、「ABE統計的質問機能におけるア
クセス経路」(A. Klug, Access Paths in the ABE Sta
tistical Query Facility, Proceedings of 1982 ACM-S
IGMOD Conference on the Management of Data)、「ネ
ストおよびツリーに関して:部分質問、集約、限定記号
を含む質問を処理するための統一的手法」(U.Dayal, O
f Nests and Trees: A Unified Approach to Processin
g Queries that contain subqueries, aggregates and
quantifiers, Proceedings of the 13th VLDB, 198
7)、および、「関係データベース管理におけるアクセ
ス経路の選択」(Selinger P.G. et al., Access Path
Selection in a Relational Database Management, Pro
ceedingsof ACM-SIGMOD Conference on the Management
of Data, June 1979, pp. 23-34)を参照されたい。し
たがって、従来の手法の多くは、関係の大きさおよび結
合の費用を減らすためにグループ化が結合に先行する場
合の変換による利益を考慮していないか実現していな
い。
手法が、グループ・バイ(group-by)演算子を持つ質問
を十分に最適化できなかったことである。従来の手法
は、結合演算を全て評価した後でグループ・バイ演算を
実行する。例えば、「ABE統計的質問機能におけるア
クセス経路」(A. Klug, Access Paths in the ABE Sta
tistical Query Facility, Proceedings of 1982 ACM-S
IGMOD Conference on the Management of Data)、「ネ
ストおよびツリーに関して:部分質問、集約、限定記号
を含む質問を処理するための統一的手法」(U.Dayal, O
f Nests and Trees: A Unified Approach to Processin
g Queries that contain subqueries, aggregates and
quantifiers, Proceedings of the 13th VLDB, 198
7)、および、「関係データベース管理におけるアクセ
ス経路の選択」(Selinger P.G. et al., Access Path
Selection in a Relational Database Management, Pro
ceedingsof ACM-SIGMOD Conference on the Management
of Data, June 1979, pp. 23-34)を参照されたい。し
たがって、従来の手法の多くは、関係の大きさおよび結
合の費用を減らすためにグループ化が結合に先行する場
合の変換による利益を考慮していないか実現していな
い。
【0004】最近、結合演算の先にグループ・バイ演算
子を実行することを可能にする変換が見い出された。例
えば、「結合前のグループ・バイの実行」(W. Yan and
P.Larson, Performing Group-By before Join,Interna
tional Conference on DataEngineering, 1993)を参照
されたい。この手法は、与えられた質問の関係を2つの
質問を形成するように2つのグループに分解(partitio
n)することに基づいている。与えられた質問の結果
は、上記の2つの質問の結果を結合することによって最
終的に得られる。しかし、結合演算の先にグループ・バ
イ演算を実行することの対価として、関係の順序づけが
分解の範囲内でだけ考慮されるので、結合を順序づける
ための選択の空間が減る。さらに、質問が与えられる
と、グループ・バイ演算子を特異な位置に配置する。し
たがって、上記文献「結合前のグループ・バイの実行」
による変換は、より効率の良い実行ができる別の実行計
画を捕らえることができない。
子を実行することを可能にする変換が見い出された。例
えば、「結合前のグループ・バイの実行」(W. Yan and
P.Larson, Performing Group-By before Join,Interna
tional Conference on DataEngineering, 1993)を参照
されたい。この手法は、与えられた質問の関係を2つの
質問を形成するように2つのグループに分解(partitio
n)することに基づいている。与えられた質問の結果
は、上記の2つの質問の結果を結合することによって最
終的に得られる。しかし、結合演算の先にグループ・バ
イ演算を実行することの対価として、関係の順序づけが
分解の範囲内でだけ考慮されるので、結合を順序づける
ための選択の空間が減る。さらに、質問が与えられる
と、グループ・バイ演算子を特異な位置に配置する。し
たがって、上記文献「結合前のグループ・バイの実行」
による変換は、より効率の良い実行ができる別の実行計
画を捕らえることができない。
【0005】
【発明が解決しようとする課題】本発明の目的は、グル
ープ・バイ演算子を持つ質問を最適化する方法を提供す
ることである。
ープ・バイ演算子を持つ質問を最適化する方法を提供す
ることである。
【0006】
【課題を解決するための手段】本発明は、グループ・バ
イ演算子を実行計画の内部の節(internal node)にす
ることによって、データベースのための質問を最適化す
る。本発明では、節で結合された関係を持つ質問が、関
係データベースのために最適化される。最適化の手続き
(プロシージャ)は、最適化すべきグループ・バイを持
つ質問を受け取り、グループ・バイを内部の各結合節に
先行して置くことを考慮した複数の質問実行計画を生成
し、実行計画の費用を見積もり、最も費用の低い実行計
画を選択することからなる。また、本発明は、装置とし
て具体化することもできる。
イ演算子を実行計画の内部の節(internal node)にす
ることによって、データベースのための質問を最適化す
る。本発明では、節で結合された関係を持つ質問が、関
係データベースのために最適化される。最適化の手続き
(プロシージャ)は、最適化すべきグループ・バイを持
つ質問を受け取り、グループ・バイを内部の各結合節に
先行して置くことを考慮した複数の質問実行計画を生成
し、実行計画の費用を見積もり、最も費用の低い実行計
画を選択することからなる。また、本発明は、装置とし
て具体化することもできる。
【0007】本発明は、グループ・バイ演算子を最適化
する強力な手法を提供する点に利点がある。この結果、
最適化手段すなわちオプティマイザは、質問のためのよ
りよい実行計画を選択することができるので、いっそう
効率良く動作することができる。
する強力な手法を提供する点に利点がある。この結果、
最適化手段すなわちオプティマイザは、質問のためのよ
りよい実行計画を選択することができるので、いっそう
効率良く動作することができる。
【0008】
【実施例】図1ないし図10を参照して、本発明の実施
例を以下に述べる。当業者には明らかなように、本発明
は、以下の限られた実施例を超えて拡張できるので、以
下の説明は例として記述したものであることを理解され
たい。
例を以下に述べる。当業者には明らかなように、本発明
は、以下の限られた実施例を超えて拡張できるので、以
下の説明は例として記述したものであることを理解され
たい。
【0009】本発明は、グループ・バイ演算子を持つ質
問を最適化するための方法と装置を含む関係データベー
ス・システムに関わる。図1は、本発明による関係デー
タベース管理システム2を示すブロック図である。関係
データベース管理システム2は、最適化すべき質問10
を受け取る。質問10は最適化手段12に供給され、最
適化手段12は費用情報14に従って質問10を最適化
する。概略を述べれば、最適化手段12は処理すべき質
問を受け取り、複数の代替実行計画を生成し、最適の計
画を選択する。また、関係データベース管理システム2
は、選択された最適の計画にしたがって質問10を処理
するときに関係テーブル18をアクセスする、関係実行
エンジン16を含む。
問を最適化するための方法と装置を含む関係データベー
ス・システムに関わる。図1は、本発明による関係デー
タベース管理システム2を示すブロック図である。関係
データベース管理システム2は、最適化すべき質問10
を受け取る。質問10は最適化手段12に供給され、最
適化手段12は費用情報14に従って質問10を最適化
する。概略を述べれば、最適化手段12は処理すべき質
問を受け取り、複数の代替実行計画を生成し、最適の計
画を選択する。また、関係データベース管理システム2
は、選択された最適の計画にしたがって質問10を処理
するときに関係テーブル18をアクセスする、関係実行
エンジン16を含む。
【0010】代表的な質問は、次のような単一ブロック
のSQL質問である。 SELECT ALL <columnlist> AGG1(b1) ... AGGn(bn) FROM <tablelist> WHERE cond1 AND cond2 ... AND condn GROUP BY col1 ... colj 各質問のWHERE文節は単純述語の論理積である。SQL
意味論は、<columnlist>が、col1,......, coljにある
ことを必要とする。AGG1,..., AGGnは、組込型SQL集
約関数を表す。列b1, ..., bnの組は、質問の集約化列
である。列coll,...,coljの組は、質問のグループ化列
と呼ばれる。ここで、集約は、Sum(colname)、Max(coln
ame)、または、Min(colname)のどれか1つの形式を持つ
ものと仮定する。
のSQL質問である。 SELECT ALL <columnlist> AGG1(b1) ... AGGn(bn) FROM <tablelist> WHERE cond1 AND cond2 ... AND condn GROUP BY col1 ... colj 各質問のWHERE文節は単純述語の論理積である。SQL
意味論は、<columnlist>が、col1,......, coljにある
ことを必要とする。AGG1,..., AGGnは、組込型SQL集
約関数を表す。列b1, ..., bnの組は、質問の集約化列
である。列coll,...,coljの組は、質問のグループ化列
と呼ばれる。ここで、集約は、Sum(colname)、Max(coln
ame)、または、Min(colname)のどれか1つの形式を持つ
ものと仮定する。
【0011】本発明の動作を、ある会社とそのビジネス
に関する情報を含むデータベースへの代表的な2つの質
問を使って説明する。会社はいくつかの事業部を持ち、
各事業部は部門に属し、各製品は事業部に属している。
注文がディーラーから出される。各注文に対して、数量
と販売日が登録される。各ディーラーに対して、州名と
ストリート・アドレスが記録される。このデータベース
は、次の4つの関係を使用して表される。各関係におい
て、最初の属性がキーを表す。 関係、事業部:2つの属性divid、sectoridを持つ。 関係、製品:2つの属性prodid、dividを持つ。 関係、注文:5つの属性orderid、prodid、dealerid、a
mount、dateを持つ。 関係、ディーラー:3つの属性dealerid、state、addre
ssを持つ。
に関する情報を含むデータベースへの代表的な2つの質
問を使って説明する。会社はいくつかの事業部を持ち、
各事業部は部門に属し、各製品は事業部に属している。
注文がディーラーから出される。各注文に対して、数量
と販売日が登録される。各ディーラーに対して、州名と
ストリート・アドレスが記録される。このデータベース
は、次の4つの関係を使用して表される。各関係におい
て、最初の属性がキーを表す。 関係、事業部:2つの属性divid、sectoridを持つ。 関係、製品:2つの属性prodid、dividを持つ。 関係、注文:5つの属性orderid、prodid、dealerid、a
mount、dateを持つ。 関係、ディーラー:3つの属性dealerid、state、addre
ssを持つ。
【0012】第1の代表的な質問Q1は次のようなもの
である。 SELECT ALL Sum(amount) FROM Order, Dealer, Product WHERE Order.dealerid=Dealer.dealerid AND Order.pro
did=Product.prodid GROUP BY Order.dealerid, Order.prodid 第2の代表的な質問Q2は次のようなものである。 SELECT ALL Sum (amount) FROM Order, Product, Division WHERE Product.divid=Division.divid AND Order.prodi
d=Product.prodid GROUP BY Division.sectorid 本発明は、グループ・バイ演算子の特性に関わるので、
次のグループ・バイ演算子の注釈(annotations)、す
なわち、 (i)グループ化列、(ii)集約化列、および、(i
ii)集約関数が使用される。これらの注釈の意味はデー
タベース分野でよく知られている。さらに多くの注釈が
あるが、ここでの議論に密接な関係はない。
である。 SELECT ALL Sum(amount) FROM Order, Dealer, Product WHERE Order.dealerid=Dealer.dealerid AND Order.pro
did=Product.prodid GROUP BY Order.dealerid, Order.prodid 第2の代表的な質問Q2は次のようなものである。 SELECT ALL Sum (amount) FROM Order, Product, Division WHERE Product.divid=Division.divid AND Order.prodi
d=Product.prodid GROUP BY Division.sectorid 本発明は、グループ・バイ演算子の特性に関わるので、
次のグループ・バイ演算子の注釈(annotations)、す
なわち、 (i)グループ化列、(ii)集約化列、および、(i
ii)集約関数が使用される。これらの注釈の意味はデー
タベース分野でよく知られている。さらに多くの注釈が
あるが、ここでの議論に密接な関係はない。
【0013】従来の質問の実行計画は、構文上、根(ル
ート)がグループ・バイ演算であり、各葉(リーフ)節
が走査演算である、注釈された結合木として表すことが
できる。従来、注釈された結合木の内部の節は常に結合
演算であった。結合節の注釈は、選択条件および射影属
性とともに、結合方法の選択を含む。選択条件および射
影はできる限り早い時点でつけられる。図2は、第1の
代表的な質問Q1のための、従来の、左側に深い(left
-deep:左深と略す)結合木20の概略図を示す。典型
的には、従来の左深結合木20の内部の節22は結合演
算である。
ート)がグループ・バイ演算であり、各葉(リーフ)節
が走査演算である、注釈された結合木として表すことが
できる。従来、注釈された結合木の内部の節は常に結合
演算であった。結合節の注釈は、選択条件および射影属
性とともに、結合方法の選択を含む。選択条件および射
影はできる限り早い時点でつけられる。図2は、第1の
代表的な質問Q1のための、従来の、左側に深い(left
-deep:左深と略す)結合木20の概略図を示す。典型
的には、従来の左深結合木20の内部の節22は結合演
算である。
【0014】従来の手法に対比して、本発明は、グルー
プ・バイ演算子が内部の節になることを可能にする。し
たがって、グループ・バイ演算子が内部の節としても起
こることができる注釈された結合木をさすのに、拡張注
釈結合木という用語を用いる。同様に、拡張された左深
結合木は、グループ・バイ演算子が内部の節としても起
こる左深結合木である。図3(A)および図3(B)は
拡張左深結合木24、28の概略図を示すもので、グル
ープ・バイ演算子が結合木24、28の中で内部の節2
6、30として起こっている。簡潔にするために、図
2、図3(A)、および図3(B)に示した走査節は、
関係を表す名前をつけてある。
プ・バイ演算子が内部の節になることを可能にする。し
たがって、グループ・バイ演算子が内部の節としても起
こることができる注釈された結合木をさすのに、拡張注
釈結合木という用語を用いる。同様に、拡張された左深
結合木は、グループ・バイ演算子が内部の節としても起
こる左深結合木である。図3(A)および図3(B)は
拡張左深結合木24、28の概略図を示すもので、グル
ープ・バイ演算子が結合木24、28の中で内部の節2
6、30として起こっている。簡潔にするために、図
2、図3(A)、および図3(B)に示した走査節は、
関係を表す名前をつけてある。
【0015】節nの結合列は、ある先祖節nで評価され
る結合述語に参加する列である。節nに必要とされる列
は、節nの結合列であるか、または、質問のグループ化
列である。節nの候補となる集約化列は、質問の集約化
列である節の列であるが必要とされる列でないものであ
る。
る結合述語に参加する列である。節nに必要とされる列
は、節nの結合列であるか、または、質問のグループ化
列である。節nの候補となる集約化列は、質問の集約化
列である節の列であるが必要とされる列でないものであ
る。
【0016】グループ・バイ節が左深木の節nのすぐ上
に導入される場合は、(i)グループ化列の組は、必要と
される列nの組であり、(ii)集約化列の組は、候補とな
る集約化列nの組である、という注釈を持たなければな
らない。たとえば、図3(A)で示した木24で、走査
節Orderに必要な列は{dealerid, prodid}であり、走
査節Orderの候補となる集約化列は{amount}である。
に導入される場合は、(i)グループ化列の組は、必要と
される列nの組であり、(ii)集約化列の組は、候補とな
る集約化列nの組である、という注釈を持たなければな
らない。たとえば、図3(A)で示した木24で、走査
節Orderに必要な列は{dealerid, prodid}であり、走
査節Orderの候補となる集約化列は{amount}である。
【0017】注釈をつけられた2つの結合木は、どのデ
ータベースからでも同じ答えが得られる場合、ある与え
られたスキーマ(たとえば、記憶されたデータベースの
表および列)に対して等価である。本発明は、与えられ
た左深木から等価の左深木の導出を可能にする変換を識
別する。そのような変換について以下に述べる。
ータベースからでも同じ答えが得られる場合、ある与え
られたスキーマ(たとえば、記憶されたデータベースの
表および列)に対して等価である。本発明は、与えられ
た左深木から等価の左深木の導出を可能にする変換を識
別する。そのような変換について以下に述べる。
【0018】第1の変換(invariant grouping propert
y:不変グループ化特性)では、拡張左深木は、グルー
プ・バイ演算子の位置を動かすことによって得られる。
第2の変換(simple coalescing grouping property:
単純合同グループ化特性)では、左深木の1つのグルー
プ・バイは、拡張左深木の複数のグループ・バイ演算子
で置き換えられる。
y:不変グループ化特性)では、拡張左深木は、グルー
プ・バイ演算子の位置を動かすことによって得られる。
第2の変換(simple coalescing grouping property:
単純合同グループ化特性)では、左深木の1つのグルー
プ・バイは、拡張左深木の複数のグループ・バイ演算子
で置き換えられる。
【0019】図4は、本発明の実施例による変換選択ル
ーチン70のフローチャートである。このルーチンの目
的は、与えられた左深木の中で、ある節が、不変グルー
プ化特性を満たすか、あるいは、単純合同特性を満たす
かを識別するものである。変換選択ルーチン70は、先
ずブロック72で、候補となる集約化列の組が、質問の
集約化列の組のサブセットであるかを判断する。候補と
なる集約化列が質問の集約化列にない場合は、グループ
・バイ演算子が使用できる変換がないので(ブロック7
4)、ルーチン70は終了する。他方、候補となる集約
化列が質問の集約化列のサブセットである場合、ルーチ
ン70は、ブロック76で、残りの結合演算子(すなわ
ち、質問木のより高いレベルで起こる結合演算)が外来
キー上にあるかを判断する。言い換えれば、残りの結合
は、他の関係のキー列上の等結合である。残りの結合演
算子が外来キー上で動作する場合、ルーチン70は、必
要とされる列が、質問のグループ化列の組のサブセット
であるかを判断する(ブロック77)。そうである場
合、不変グループ化特性が存在し(ブロック78)、ル
ーチン70は終了する。そうでない場合、グループ・バ
イ演算子が使用できる変換がないままルーチン70は終
了する。他方、残りの結合演算子が外来キー上だけで動
作しない場合は、ルーチン70は、集約関数が合併特性
(union property)を満たすかを判断する(ブロック8
0)。合併特性については以下に述べる。質問の集約関
数が合併特性を満たす場合、単純合同グループ化特性が
存在し(ブロック82)、ルーチン70は終了する。そ
うでない場合、すなわち、集約関数が合併特性を満たさ
ない場合、グループ・バイ演算子が使用できる変換がな
いままルーチン70は終了する。
ーチン70のフローチャートである。このルーチンの目
的は、与えられた左深木の中で、ある節が、不変グルー
プ化特性を満たすか、あるいは、単純合同特性を満たす
かを識別するものである。変換選択ルーチン70は、先
ずブロック72で、候補となる集約化列の組が、質問の
集約化列の組のサブセットであるかを判断する。候補と
なる集約化列が質問の集約化列にない場合は、グループ
・バイ演算子が使用できる変換がないので(ブロック7
4)、ルーチン70は終了する。他方、候補となる集約
化列が質問の集約化列のサブセットである場合、ルーチ
ン70は、ブロック76で、残りの結合演算子(すなわ
ち、質問木のより高いレベルで起こる結合演算)が外来
キー上にあるかを判断する。言い換えれば、残りの結合
は、他の関係のキー列上の等結合である。残りの結合演
算子が外来キー上で動作する場合、ルーチン70は、必
要とされる列が、質問のグループ化列の組のサブセット
であるかを判断する(ブロック77)。そうである場
合、不変グループ化特性が存在し(ブロック78)、ル
ーチン70は終了する。そうでない場合、グループ・バ
イ演算子が使用できる変換がないままルーチン70は終
了する。他方、残りの結合演算子が外来キー上だけで動
作しない場合は、ルーチン70は、集約関数が合併特性
(union property)を満たすかを判断する(ブロック8
0)。合併特性については以下に述べる。質問の集約関
数が合併特性を満たす場合、単純合同グループ化特性が
存在し(ブロック82)、ルーチン70は終了する。そ
うでない場合、すなわち、集約関数が合併特性を満たさ
ない場合、グループ・バイ演算子が使用できる変換がな
いままルーチン70は終了する。
【0020】第1の変換は、与えられた左深木の1つあ
るいは複数の内部の節n(すなわち、不変グループ化特
性を保つ節)を識別して、等価の拡張左深木が、グルー
プ・バイ演算子をそのような節nの上に動かすことによ
って、与えられた左深木から得られるようにする。この
変換は、グループ・バイ演算子(与えられた左深木の中
の)の仕様を修正することなく保持するので、不変と呼
ばれる(図3(A)および図3(B)を参照された
い)。
るいは複数の内部の節n(すなわち、不変グループ化特
性を保つ節)を識別して、等価の拡張左深木が、グルー
プ・バイ演算子をそのような節nの上に動かすことによ
って、与えられた左深木から得られるようにする。この
変換は、グループ・バイ演算子(与えられた左深木の中
の)の仕様を修正することなく保持するので、不変と呼
ばれる(図3(A)および図3(B)を参照された
い)。
【0021】与えられた左深木の節nは、次の条件、す
なわち、(i)必要とされる列nが質問のグループ化列で
あり、(ii)質問のすべての集約化列が候補となる集約化
列nであり、(iii)nの先祖である各結合節に対して、
結合が、結合の内部関係の外来キー上で等価結合述部で
あることが真実である場合、不変グループ化特性を持
つ。
なわち、(i)必要とされる列nが質問のグループ化列で
あり、(ii)質問のすべての集約化列が候補となる集約化
列nであり、(iii)nの先祖である各結合節に対して、
結合が、結合の内部関係の外来キー上で等価結合述部で
あることが真実である場合、不変グループ化特性を持
つ。
【0022】さらに、左深木の節nが不変グループ化特
性を持つ場合、その先祖も不変グループ化特性を持つこ
とになる。不変グループ化特性を持つ一組の節がチェイ
ンを形成し、等価の注釈をつけられた拡張結合木は、グ
ループ・バイ演算子をチェインの中のどれか1つの節の
上に置くことによって得ることができる。不変グループ
化特性を持つ複数の節にグループ・バイを置くことは冗
長であることに留意されたい。
性を持つ場合、その先祖も不変グループ化特性を持つこ
とになる。不変グループ化特性を持つ一組の節がチェイ
ンを形成し、等価の注釈をつけられた拡張結合木は、グ
ループ・バイ演算子をチェインの中のどれか1つの節の
上に置くことによって得ることができる。不変グループ
化特性を持つ複数の節にグループ・バイを置くことは冗
長であることに留意されたい。
【0023】第2の変換も早期のグループ化を実行する
機会を利用するが、しかし、その後、先に形成された複
数のグループの合同を行う付加的なグループ化が必要に
なる場合がある。したがって、単純合同に基づいた変換
の結果として、左深木の1つのグループ・バイ演算子
は、結果として生じる拡張左深結合木の複数のグループ
・バイ演算子で置き換えることができる。それでもな
お、そのような変換は、従来の最適化手段によって得ら
れる実行計画にくらべて何倍も優れた実行計画を得るの
に役立つことが多い。
機会を利用するが、しかし、その後、先に形成された複
数のグループの合同を行う付加的なグループ化が必要に
なる場合がある。したがって、単純合同に基づいた変換
の結果として、左深木の1つのグループ・バイ演算子
は、結果として生じる拡張左深結合木の複数のグループ
・バイ演算子で置き換えることができる。それでもな
お、そのような変換は、従来の最適化手段によって得ら
れる実行計画にくらべて何倍も優れた実行計画を得るの
に役立つことが多い。
【0024】第2の変換(すなわち、単純合同グループ
化特性)の場合、不変グループ化の条件(ii)および(ii
i)はもはや満たす必要はない。条件(ii)または(iii)が
満たされない場合、合同されたグループに対応するタプ
ル(tuple)は、質問のグループ化列で一致する出力関
係の中に2つ以上のタプルを生じることがある。
化特性)の場合、不変グループ化の条件(ii)および(ii
i)はもはや満たす必要はない。条件(ii)または(iii)が
満たされない場合、合同されたグループに対応するタプ
ル(tuple)は、質問のグループ化列で一致する出力関
係の中に2つ以上のタプルを生じることがある。
【0025】したがって、不変グループ化に対する条件
(ii)および/または(iii)が真実でない場合にグループ
・バイを押し下げるためには、グループ化列で一致する
2つのグループを合同することが可能でなければならな
い。幸い、組込型SQL集約関数Agg (たとえば、Sum)
のためには、1袋のタプルの集約は、その袋の分解から
計算された集約から計算することができる。すなわち、 Agg(Agg(S),Agg(S')) = Agg(S ∪ S') [合併特性] ...(1) として表すことができる。上記式において、Sおよび
S'は任意の袋で、∪は袋の合併を表す。したがって、
グループ・バイをもう1つ適用することにより、2つの
グループを合同することができる。
(ii)および/または(iii)が真実でない場合にグループ
・バイを押し下げるためには、グループ化列で一致する
2つのグループを合同することが可能でなければならな
い。幸い、組込型SQL集約関数Agg (たとえば、Sum)
のためには、1袋のタプルの集約は、その袋の分解から
計算された集約から計算することができる。すなわち、 Agg(Agg(S),Agg(S')) = Agg(S ∪ S') [合併特性] ...(1) として表すことができる。上記式において、Sおよび
S'は任意の袋で、∪は袋の合併を表す。したがって、
グループ・バイをもう1つ適用することにより、2つの
グループを合同することができる。
【0026】したがって、質問のすべての集約化列が節
nの候補となる集約化列で、集約が合併特性(式1)を
満たすならば、与えられた左深木の節nは単純合同グル
ープ化特性を持つ。ある節が単純合同グループ化特性を
持つならば、左深結合木のそのすべての先祖も単純合同
グループ化特性を持つ。単純合同グループ化特性を持つ
節のチェインに沿った1つまたは複数の節にグループ・
バイ演算子を置くことは、新しい拡張左深木を与えられ
た左深木に等価のままにする。
nの候補となる集約化列で、集約が合併特性(式1)を
満たすならば、与えられた左深木の節nは単純合同グル
ープ化特性を持つ。ある節が単純合同グループ化特性を
持つならば、左深結合木のそのすべての先祖も単純合同
グループ化特性を持つ。単純合同グループ化特性を持つ
節のチェインに沿った1つまたは複数の節にグループ・
バイ演算子を置くことは、新しい拡張左深木を与えられ
た左深木に等価のままにする。
【0027】不変グループ化に対比して、節のチェイン
に沿ってグループ・バイ演算子を複数適用することは冗
長ではなく、グループ化を段階的に実行する結果にな
る。例として、図5に、代表的な第2の質問Q2のため
の左深木の概略図を示す。したがって、木32は、質問
Q2の従来の実行計画である。木32の節Orderは不変
グループ化特性を持たないが、質問の集約化列(amoun
t)がOrderの候補となる集約化列でもあり、且つ集約関
数Sumが合併特性を満たすので、単純合同グループ化特
性を満たす。したがって、図6(A)および図6(B)
に示された木34および36は、図5の木32に等し
い。グループ化を複数適用することは冗長でなく、注文
の和を連続計算するために使われる。
に沿ってグループ・バイ演算子を複数適用することは冗
長ではなく、グループ化を段階的に実行する結果にな
る。例として、図5に、代表的な第2の質問Q2のため
の左深木の概略図を示す。したがって、木32は、質問
Q2の従来の実行計画である。木32の節Orderは不変
グループ化特性を持たないが、質問の集約化列(amoun
t)がOrderの候補となる集約化列でもあり、且つ集約関
数Sumが合併特性を満たすので、単純合同グループ化特
性を満たす。したがって、図6(A)および図6(B)
に示された木34および36は、図5の木32に等し
い。グループ化を複数適用することは冗長でなく、注文
の和を連続計算するために使われる。
【0028】変換には、最適化の機会を提供する重要な
関係がある。たとえば、不変グループ化特性を持つ節
は、単純合同グループ化特性を持つ節の特別なケースで
ある。したがって、単純合同変換によって導入されたグ
ループ・バイ演算子が不変グループ化節に置かれる場
合、不変グループ化の特性は、冗長なグループ・バイ演
算子がある場合これらを除くために使うことができる。
関係がある。たとえば、不変グループ化特性を持つ節
は、単純合同グループ化特性を持つ節の特別なケースで
ある。したがって、単純合同変換によって導入されたグ
ループ・バイ演算子が不変グループ化節に置かれる場
合、不変グループ化の特性は、冗長なグループ・バイ演
算子がある場合これらを除くために使うことができる。
【0029】最後に、単純合同は、ある節がこの特性を
満たすか否かが、残りの結合に関係なく、"局部で"テス
トできるという顕著な特性を持つことに留意されたい。
この特性は、上述の変換を使用する本発明の最適化プロ
シージャで使用される。
満たすか否かが、残りの結合に関係なく、"局部で"テス
トできるという顕著な特性を持つことに留意されたい。
この特性は、上述の変換を使用する本発明の最適化プロ
シージャで使用される。
【0030】図7(A)ないし図7(C)は、左深結合
木に変換を適用する可能性を示す。図7(A)に示した
結合木84の概略図は、従来の最適化手段によって作ら
れたものである。結合木84は従来の最適化手段によっ
て得られた左深木を表す。Gと印を付けられた節は、グ
ループ・バイ演算子が適用されることを表す。従来と同
じように、図7(A)に示したグループ・バイ演算子は
最後に実行される。図7(B)は、第1の変換の適用を
示す結合木86の概略図を示す。Aとつけられた円で囲
まれた部分木は、質問のすべての集約列がその節の下で
起こることを表している。結合木86は、不変グループ
化特性を保つ節のチェイン(点線の円)がある木を表
す。点線の円は、グループ・バイ演算子が点線のついた
節のどれか1つにだけ置くことができることを示す。図
7(C)は、第2の変換の適用を示す結合木88の概略
図である。結合木88は、節が単純合同グループ化特性
を持ち、したがって、複数のグループ・バイ演算子がチ
ェインに沿って出現できる場合の木を表す。
木に変換を適用する可能性を示す。図7(A)に示した
結合木84の概略図は、従来の最適化手段によって作ら
れたものである。結合木84は従来の最適化手段によっ
て得られた左深木を表す。Gと印を付けられた節は、グ
ループ・バイ演算子が適用されることを表す。従来と同
じように、図7(A)に示したグループ・バイ演算子は
最後に実行される。図7(B)は、第1の変換の適用を
示す結合木86の概略図を示す。Aとつけられた円で囲
まれた部分木は、質問のすべての集約列がその節の下で
起こることを表している。結合木86は、不変グループ
化特性を保つ節のチェイン(点線の円)がある木を表
す。点線の円は、グループ・バイ演算子が点線のついた
節のどれか1つにだけ置くことができることを示す。図
7(C)は、第2の変換の適用を示す結合木88の概略
図である。結合木88は、節が単純合同グループ化特性
を持ち、したがって、複数のグループ・バイ演算子がチ
ェインに沿って出現できる場合の木を表す。
【0031】変換について左深木の場合の文脈で述べた
が、これらの変換は、より一般化したもの、および、注
釈がつけられた枝葉の多い結合木にも適用できることに
留意されたい。さらに上記で考慮したSQLの組込み集
約関数Max、Min、および、Sumは、すべての変換に適用
できる。
が、これらの変換は、より一般化したもの、および、注
釈がつけられた枝葉の多い結合木にも適用できることに
留意されたい。さらに上記で考慮したSQLの組込み集
約関数Max、Min、および、Sumは、すべての変換に適用
できる。
【0032】質問の中で、列の集約がAll(たとえば、S
um(All amount))によって修飾される、前述の仮定につ
いても考慮してみよう。修飾語AllはSQLでデフォル
ト仕様である。この制限は簡単にゆるめることができ
る。先ず、不変グループ化変換は、Distinctによって修
飾された集約にも適用できることに留意されたい。次
に、単純合同については、質問にDistinct修飾句を持つ
集約がある場合は、Distinct列は、変換の観点からは、
質問のグループ・バイ列の一部と考えることができる。
したがって、これらの列の集約が早い時点でのグループ
化の間に計算されなくても、修飾句Allを持った集約
は、本発明の変換を用いて計算することができる。
um(All amount))によって修飾される、前述の仮定につ
いても考慮してみよう。修飾語AllはSQLでデフォル
ト仕様である。この制限は簡単にゆるめることができ
る。先ず、不変グループ化変換は、Distinctによって修
飾された集約にも適用できることに留意されたい。次
に、単純合同については、質問にDistinct修飾句を持つ
集約がある場合は、Distinct列は、変換の観点からは、
質問のグループ・バイ列の一部と考えることができる。
したがって、これらの列の集約が早い時点でのグループ
化の間に計算されなくても、修飾句Allを持った集約
は、本発明の変換を用いて計算することができる。
【0033】また、必要とされる列の組が残りの列を関
数的に決める場合には、グループ・バイ演算子を呼び出
すことは冗長であることに留意されたい。そのような場
合、各グループは単集合である。最適化手段は、計画の
費用を見積もる際に、このことを認識できるように設計
されている。上には述べなかったが、変換は、Order-by
演算子、あるいは、Having演算子を持っている質問にも
適用できる。
数的に決める場合には、グループ・バイ演算子を呼び出
すことは冗長であることに留意されたい。そのような場
合、各グループは単集合である。最適化手段は、計画の
費用を見積もる際に、このことを認識できるように設計
されている。上には述べなかったが、変換は、Order-by
演算子、あるいは、Having演算子を持っている質問にも
適用できる。
【0034】図8は、本発明による最適化手段12の基
本動作を示すフローチャートである。先ず、最適化手段
12は処理すべき質問10を受け取る(ブロック3
8)。次に、ブロック40で、最適化手段12は、受け
取った質問10がグループ・バイ演算子を含んでいるか
どうかを判断する。受け取った質問10がグループ・バ
イ演算子を含んでいない場合、従来の最適化プロシージ
ャ42が実行される。他方、受け取った質問10がグル
ープ・バイ演算子を含んでいると判断された場合には、
本発明による拡張最適化プロシージャ44が実行され
る。従来の最適化プロシージャ42は公知であり本発明
の事項ではないので、これ以上述べない。拡張最適化プ
ロシージャ44については、図7ないし図9を参照しな
がら以下に詳しく述べる。
本動作を示すフローチャートである。先ず、最適化手段
12は処理すべき質問10を受け取る(ブロック3
8)。次に、ブロック40で、最適化手段12は、受け
取った質問10がグループ・バイ演算子を含んでいるか
どうかを判断する。受け取った質問10がグループ・バ
イ演算子を含んでいない場合、従来の最適化プロシージ
ャ42が実行される。他方、受け取った質問10がグル
ープ・バイ演算子を含んでいると判断された場合には、
本発明による拡張最適化プロシージャ44が実行され
る。従来の最適化プロシージャ42は公知であり本発明
の事項ではないので、これ以上述べない。拡張最適化プ
ロシージャ44については、図7ないし図9を参照しな
がら以下に詳しく述べる。
【0035】概略的に、最適化手段12はグループ・バ
イ演算子を持つ質問を受け取り、変換を用いて一連の代
替実行計画(実行空間)を作成し、次に、費用に基づく
手法を用いて、代替実行計画から最適の計画を選択す
る。最適化手段12の動作について概略説明したので、
次に拡張最適化プロシージャ44について述べる。
イ演算子を持つ質問を受け取り、変換を用いて一連の代
替実行計画(実行空間)を作成し、次に、費用に基づく
手法を用いて、代替実行計画から最適の計画を選択す
る。最適化手段12の動作について概略説明したので、
次に拡張最適化プロシージャ44について述べる。
【0036】最適化効率のために、実行空間は、左深結
合木の種類になるように制限されている。左深結合木
は、内部の各節の右の子が葉であるように注釈された結
合木のことである。
合木の種類になるように制限されている。左深結合木
は、内部の各節の右の子が葉であるように注釈された結
合木のことである。
【0037】図9に、少なくとも1つの結合を持った質
問について記述された、拡張最適化プロシージャ44に
関連した基本的な最適化ルーチン46を示すフローチャ
ートを示す。先ず、最適化ルーチン46は、ブロック4
8で、部分質問(サブクエリ:subquery)の大きさに対
応するインデックス(i)を2に設定する。部分質問の
大きさがiに設定されると、最適化手段12は、与えら
れた質問の中で述べられている関係iからなる部分質問
を最適化する。したがって、部分質問の最大の大きさ
は、与えられた質問の中の関係の数(N)になり得る。
次に、部分質問の大きさのレベルに基づいて判断50が
行われる。部分質問の大きさがNを超える場合、最適化
ルーチン46は終了する。他方、部分質問の大きさがN
を超えない場合、最適化ルーチン46は部分質問の大き
さを増分する。
問について記述された、拡張最適化プロシージャ44に
関連した基本的な最適化ルーチン46を示すフローチャ
ートを示す。先ず、最適化ルーチン46は、ブロック4
8で、部分質問(サブクエリ:subquery)の大きさに対
応するインデックス(i)を2に設定する。部分質問の
大きさがiに設定されると、最適化手段12は、与えら
れた質問の中で述べられている関係iからなる部分質問
を最適化する。したがって、部分質問の最大の大きさ
は、与えられた質問の中の関係の数(N)になり得る。
次に、部分質問の大きさのレベルに基づいて判断50が
行われる。部分質問の大きさがNを超える場合、最適化
ルーチン46は終了する。他方、部分質問の大きさがN
を超えない場合、最適化ルーチン46は部分質問の大き
さを増分する。
【0038】その後、部分質問の大きさの各値に対し、
ブロック52で最初に1に設定された関係インデックス
(j)の値について反復計算が行われる。一般に、Nを質
問の中の関係の数とするとき、関係インデックスは1か
らN+1までの値をとる。その後、関係インデックスの
大きさに基づいて判断54がなされる。関係インデック
スがNを超えると、判断54により、特定の部分質問の
大きさ(i)に対する最適化が完了したと判断する。こ
の場合、ブロック56で、部分質問の大きさは増分され
(i+1)、その後、処理の流れはブロック50に戻
り、大きさ(i+1)の部分質問の処理が行われる。他
方、関係インデックスがNを超えていない場合、ブロッ
ク58で、結合Rjに対する最適計画が、全ての部分質
問Sjの大きさ(i−1の)について考慮されたかどう
かに基づいて判断が行われる。そうである場合、関係イ
ンデックスは増分され(ブロック60)、処理の流れは
ブロック54に戻り、次の関係(Rj+1)が処理され
る。他方、ブロック58で、関係Rjに対して部分質問
Sjの全てがまだ最適化されていないと判断された場
合、次の式、すなわち、
ブロック52で最初に1に設定された関係インデックス
(j)の値について反復計算が行われる。一般に、Nを質
問の中の関係の数とするとき、関係インデックスは1か
らN+1までの値をとる。その後、関係インデックスの
大きさに基づいて判断54がなされる。関係インデック
スがNを超えると、判断54により、特定の部分質問の
大きさ(i)に対する最適化が完了したと判断する。こ
の場合、ブロック56で、部分質問の大きさは増分され
(i+1)、その後、処理の流れはブロック50に戻
り、大きさ(i+1)の部分質問の処理が行われる。他
方、関係インデックスがNを超えていない場合、ブロッ
ク58で、結合Rjに対する最適計画が、全ての部分質
問Sjの大きさ(i−1の)について考慮されたかどう
かに基づいて判断が行われる。そうである場合、関係イ
ンデックスは増分され(ブロック60)、処理の流れは
ブロック54に戻り、次の関係(Rj+1)が処理され
る。他方、ブロック58で、関係Rjに対して部分質問
Sjの全てがまだ最適化されていないと判断された場
合、次の式、すなわち、
【0039】
【数1】 で表される部分質問に対する最適計画が、拡張最適化ル
ーチンを使って決められる(ブロック62)。拡張最適
化ルーチンについては、図10を参照して以下に詳しく
述べる。ブロック62の後、処理の流れは判断ブロック
58に戻る。その結果、判断ブロック58によってすべ
ての部分質問Sjが関係Rjに関して最適化されたと判断
されるまで、ブロック58から60が繰り返される。
ーチンを使って決められる(ブロック62)。拡張最適
化ルーチンについては、図10を参照して以下に詳しく
述べる。ブロック62の後、処理の流れは判断ブロック
58に戻る。その結果、判断ブロック58によってすべ
ての部分質問Sjが関係Rjに関して最適化されたと判断
されるまで、ブロック58から60が繰り返される。
【0040】図10は、本発明の実施例による拡張最適
化ルーチン64のフローチャートである。拡張最適化ル
ーチン64は、Qs、すなわち、SjとRjとの結合のた
めの最適計画を生成するものである。拡張最適化ルーチ
ン64は、質問10に対するグループ化列および集約化
列を識別することから始まる(ブロック66)。
化ルーチン64のフローチャートである。拡張最適化ル
ーチン64は、Qs、すなわち、SjとRjとの結合のた
めの最適計画を生成するものである。拡張最適化ルーチ
ン64は、質問10に対するグループ化列および集約化
列を識別することから始まる(ブロック66)。
【0041】上述したように、グループ・バイ演算子が
注釈された結合木のどこに置くことができるかという制
限があるので、この最適化の間に、等価結合木が作られ
る。次に、ブロック84で、グループ・バイ演算子が関
係Sjおよび/あるいはRjのすぐ上に置くことができる
かどうか(すなわち、RjあるいはSjが単純合同特性を
満足するか)に基づいて判断が行われる。グループ・バ
イ演算子が関係Sjおよび/あるいはRjのすぐ上に置け
る場合は、ブロック86により、結合計画が作成され、
計画の費用が見積もられる。結合計画は次のものであ
る。
注釈された結合木のどこに置くことができるかという制
限があるので、この最適化の間に、等価結合木が作られ
る。次に、ブロック84で、グループ・バイ演算子が関
係Sjおよび/あるいはRjのすぐ上に置くことができる
かどうか(すなわち、RjあるいはSjが単純合同特性を
満足するか)に基づいて判断が行われる。グループ・バ
イ演算子が関係Sjおよび/あるいはRjのすぐ上に置け
る場合は、ブロック86により、結合計画が作成され、
計画の費用が見積もられる。結合計画は次のものであ
る。
【0042】
【数2】 このような結合計画は、グループ・バイ演算子が結合演
算に先行するので、グループ・バイ結合計画と呼ばれ
る。グループ・バイ結合計画は、グループ・バイ演算子
を関係Sjおよび/あるいはRjのすぐ上の質問木に挿入
することによって作成される。実際には、グループ・バ
イを木の内部の節に挿入することにより、結合演算がグ
ループ・バイ結合演算によって置き換えられる。グルー
プ・バイ演算子を関係Sjおよび/あるいはRjのすぐ上
に置くことができない場合は、ブロック86はバイパス
される。次に、ブロック86がバイパスされるか否かに
かかわらず、ブロック88により、SjとRjとの結合演
算のための従来の結合計画が作られ、その費用が見積も
られる。従来の手法による結合計画は、上記「関係デー
タベース管理におけるアクセス経路の選択」に記述され
ているような手法によって作成される。
算に先行するので、グループ・バイ結合計画と呼ばれ
る。グループ・バイ結合計画は、グループ・バイ演算子
を関係Sjおよび/あるいはRjのすぐ上の質問木に挿入
することによって作成される。実際には、グループ・バ
イを木の内部の節に挿入することにより、結合演算がグ
ループ・バイ結合演算によって置き換えられる。グルー
プ・バイ演算子を関係Sjおよび/あるいはRjのすぐ上
に置くことができない場合は、ブロック86はバイパス
される。次に、ブロック86がバイパスされるか否かに
かかわらず、ブロック88により、SjとRjとの結合演
算のための従来の結合計画が作られ、その費用が見積も
られる。従来の手法による結合計画は、上記「関係デー
タベース管理におけるアクセス経路の選択」に記述され
ているような手法によって作成される。
【0043】例として図2を参照すると、木20は質問
の左深結合木である。木20は、必要とされる列{deal
erid, prodid}、および、候補となる集約列{amount}
が質問のグループ化列および集約化列に一致するので、
単純合同グループ化特性を持つ節Orderを含む。したが
って、最適化中に、図10の判断ブロック84におい
て、図2の木20の場合に、グループ・バイ演算子は節
Orderの上に置くことができると決められる。
の左深結合木である。木20は、必要とされる列{deal
erid, prodid}、および、候補となる集約列{amount}
が質問のグループ化列および集約化列に一致するので、
単純合同グループ化特性を持つ節Orderを含む。したが
って、最適化中に、図10の判断ブロック84におい
て、図2の木20の場合に、グループ・バイ演算子は節
Orderの上に置くことができると決められる。
【0044】グループ・バイ結合計画の費用見積りにつ
いて以下に述べる。従来の結合計画の費用については、
たとえば上記の「関係データベース管理におけるアクセ
ス経路の選択」 に記述されている従来手法にしたが
う。グループ・バイ結合計画(これがある場合)の費用
は、従来の費用モデルへの下記の拡張によって見積もる
ことができる。
いて以下に述べる。従来の結合計画の費用については、
たとえば上記の「関係データベース管理におけるアクセ
ス経路の選択」 に記述されている従来手法にしたが
う。グループ・バイ結合計画(これがある場合)の費用
は、従来の費用モデルへの下記の拡張によって見積もる
ことができる。
【0045】費用モデルへの拡張は、グループ化後の関
係のタプルの数を見積もる。単一列のグループ化におい
ては、グループの数は、その列の異なる値の数に等し
い。しかし、複数列のグループ化では、グループの数の
見積もりを計算する必要がある。
係のタプルの数を見積もる。単一列のグループ化におい
ては、グループの数は、その列の異なる値の数に等し
い。しかし、複数列のグループ化では、グループの数の
見積もりを計算する必要がある。
【0046】一つの費用モデル(複数列の費用モデル)
は、次の式を使用する。複数列の費用モデル:グループ
化列は独立していると仮定する。異なる値の数は、(a)
関係の中のタプルの数、および、(b)グループ化列の特
異な値の数の積、の2つの数量のうちの最小であると推
定する。しかし、実際問題としては、グループの数がよ
り小さいものが、上述の費用モデルによって予測された
ものよりも、現実的である。したがって、複数列の費用
モデルは、グループ化列が独立しているという仮定に基
づいて比較的大きな数のグループを予測するので、この
モデルはグループ化を行わないようにする効果を持つ。
上述の費用モデルは慎重さを見込むように選択されてい
るので、この費用モデルの下で早期のグループ・バイが
行われる場合は、"圧倒的な"数になる可能性がある。
は、次の式を使用する。複数列の費用モデル:グループ
化列は独立していると仮定する。異なる値の数は、(a)
関係の中のタプルの数、および、(b)グループ化列の特
異な値の数の積、の2つの数量のうちの最小であると推
定する。しかし、実際問題としては、グループの数がよ
り小さいものが、上述の費用モデルによって予測された
ものよりも、現実的である。したがって、複数列の費用
モデルは、グループ化列が独立しているという仮定に基
づいて比較的大きな数のグループを予測するので、この
モデルはグループ化を行わないようにする効果を持つ。
上述の費用モデルは慎重さを見込むように選択されてい
るので、この費用モデルの下で早期のグループ・バイが
行われる場合は、"圧倒的な"数になる可能性がある。
【0047】もう一つの費用モデル(最大値費用モデ
ル)は、"楽天的"、すなわち、より少ないグループを予
測するもので、次の式を使用する。 最大値費用モデル:異なる値の数が、すべてのグループ
化列の濃度(cardinality)の最大値に等しいと仮定す
る。言い換えれば、列は"階層的"構造を持つ。そのよう
なモデルでは、グループ化が奨励される。
ル)は、"楽天的"、すなわち、より少ないグループを予
測するもので、次の式を使用する。 最大値費用モデル:異なる値の数が、すべてのグループ
化列の濃度(cardinality)の最大値に等しいと仮定す
る。言い換えれば、列は"階層的"構造を持つ。そのよう
なモデルでは、グループ化が奨励される。
【0048】再び、図10に戻ると、拡張最適化ルーチ
ン64の最後のプロシージャは、ブロック90で、見積
もられた費用が最も低い計画を代替計画から選択する。
ブロック90で選択された計画は、関心をひく順序(in
teresting order: 関心順序)のそれぞれの、
ン64の最後のプロシージャは、ブロック90で、見積
もられた費用が最も低い計画を代替計画から選択する。
ブロック90で選択された計画は、関心をひく順序(in
teresting order: 関心順序)のそれぞれの、
【0049】
【数3】 すなわち、関係Sj、Rjのすぐ上の節に対して、最良の
計画である。これについて次に簡単に述べる。
計画である。これについて次に簡単に述べる。
【0050】関心順序とは、(a)順序づけが質問のグル
ープ・バイ文節で指定されたものと同じ場合か、あるい
は、(b)順序づけが将来のソート・マージ結合に有用な
場合に、後で役立つ中間関係のタプルの順序付けのこと
である。(b)の組は、将来の結合列のすべてからなる。
従来の最適化プロシージャと同じように、最適化手段1
2は、2つの関係の間(あるいは、中間関係と基礎的関
係との間)の結合を考慮するときにアクセス経路および
結合方法のすべてを考慮した結果生じる関心順序を生成
する。
ープ・バイ文節で指定されたものと同じ場合か、あるい
は、(b)順序づけが将来のソート・マージ結合に有用な
場合に、後で役立つ中間関係のタプルの順序付けのこと
である。(b)の組は、将来の結合列のすべてからなる。
従来の最適化プロシージャと同じように、最適化手段1
2は、2つの関係の間(あるいは、中間関係と基礎的関
係との間)の結合を考慮するときにアクセス経路および
結合方法のすべてを考慮した結果生じる関心順序を生成
する。
【0051】いままでの最適化手段と同様に、関心順序
の従来の組が利用される。しかし、本発明の新規性の一
部として、本発明にしたがいグループ・バイ節が内部に
起こり、複数のグループ化列を持つことができることは
重要な注目点であり、グループ・バイがソートを使って
実施される場合に、グループ化列の大項目から小項目へ
の順序づけを適切に選択することは有益である。
の従来の組が利用される。しかし、本発明の新規性の一
部として、本発明にしたがいグループ・バイ節が内部に
起こり、複数のグループ化列を持つことができることは
重要な注目点であり、グループ・バイがソートを使って
実施される場合に、グループ化列の大項目から小項目へ
の順序づけを適切に選択することは有益である。
【0052】上記の関心順序の組を減らすために、次の
条件、すなわち、(1) 最上位の列は、グループ・バイ節
のすぐ上の節でのソート・マージ結合列のための列であ
る、あるいは、(2) 最上位の列は、質問のグループ化列
である(そのようなグループ化列が節の列の中にある場
合)、のどちらか1つが満たされるように、大項目から
小項目への(すなわち、最上位から最下位への)列の順
序づけを制限することが望ましい。従来の最適化プロシ
ージャと同様に、第1の関心順序(1)は、その順序がグ
ループ・バイに続く結合で役立つことを確実にする。し
たがって、グループ・バイがあることによって作られる
唯一の付加的な順序は、第2の関心順序(2)である。第
2の関心順序(2)が有利である理由は、上記の順序づけ
がある場合、外側の関係が将来の結合で入れ子構造のル
ープに常に参加するならば、ソートが、将来のグループ
・バイ演算で、多分必要なくなるということである。従
来の最適化プロシージャで、第2の関心順序(2)の列が
第1の関心順序(1)に一致しない場合、ソートのための
そのような関心順序は魅力がない。というのは、後続す
る結合で利用されないソートのオーバーヘッドのため
に、結合を直ちに行うことの費用がはるかに高くつくか
らである。しかし、グループ・バイを早期に処理する場
合は、結合される関係の大きさを小さくする可能性があ
るので、第2の関心順序(2)の順序づけを探求すること
は利益あることである。
条件、すなわち、(1) 最上位の列は、グループ・バイ節
のすぐ上の節でのソート・マージ結合列のための列であ
る、あるいは、(2) 最上位の列は、質問のグループ化列
である(そのようなグループ化列が節の列の中にある場
合)、のどちらか1つが満たされるように、大項目から
小項目への(すなわち、最上位から最下位への)列の順
序づけを制限することが望ましい。従来の最適化プロシ
ージャと同様に、第1の関心順序(1)は、その順序がグ
ループ・バイに続く結合で役立つことを確実にする。し
たがって、グループ・バイがあることによって作られる
唯一の付加的な順序は、第2の関心順序(2)である。第
2の関心順序(2)が有利である理由は、上記の順序づけ
がある場合、外側の関係が将来の結合で入れ子構造のル
ープに常に参加するならば、ソートが、将来のグループ
・バイ演算で、多分必要なくなるということである。従
来の最適化プロシージャで、第2の関心順序(2)の列が
第1の関心順序(1)に一致しない場合、ソートのための
そのような関心順序は魅力がない。というのは、後続す
る結合で利用されないソートのオーバーヘッドのため
に、結合を直ちに行うことの費用がはるかに高くつくか
らである。しかし、グループ・バイを早期に処理する場
合は、結合される関係の大きさを小さくする可能性があ
るので、第2の関心順序(2)の順序づけを探求すること
は利益あることである。
【0053】例として、質問の結合順序(左から右に
((R join S) join T))を考えてみる。等価結合が、R
とSとの間の列a、および、SとTとの間の列cにあ
る。結果は、Rの列bにグループ化される。集約化列の
詳細は重要ではない。第1の結合を考慮するとき、従来
のシステムでは、ソートするための主たる列は列a(第
1の関心順序(1))であろう。しかし、グループ・バイ
がSとの結合に先行するRに押し下げられる場合は、列
bがグループ化列(第2の関心順序(2))であるので、
列bもまたソートのための主たる列として考慮される。
((R join S) join T))を考えてみる。等価結合が、R
とSとの間の列a、および、SとTとの間の列cにあ
る。結果は、Rの列bにグループ化される。集約化列の
詳細は重要ではない。第1の結合を考慮するとき、従来
のシステムでは、ソートするための主たる列は列a(第
1の関心順序(1))であろう。しかし、グループ・バイ
がSとの結合に先行するRに押し下げられる場合は、列
bがグループ化列(第2の関心順序(2))であるので、
列bもまたソートのための主たる列として考慮される。
【0054】最後に、最適計画は、不変グループ・バイ
節に変換できる単純合同グループ・バイ節があるか調べ
られる。そのような後処理は、冗長なグループ・バイ演
算子を見つけるのに役立つ(不変グループ・バイ演算子
を複数適用するのは冗長である)。
節に変換できる単純合同グループ・バイ節があるか調べ
られる。そのような後処理は、冗長なグループ・バイ演
算子を見つけるのに役立つ(不変グループ・バイ演算子
を複数適用するのは冗長である)。
【0055】上述した本発明の実施例はグループ・バイ
演算子に関わるものであったが、データベース質問を最
適化する本発明の手法は、Select Distinct質問にも有
用である。というのは、Select Distinct質問は、グル
ープ・バイの特殊なケースと見ることができるからであ
る。そのような質問は次の形式を持つ。 Select Distinct <columnlist> From <tablelist> Where condl....condn Select Distinct文節があることにより、返答、あるい
は、質問処理中に作られた中間関係の中の重複したタプ
ルを除くことができる。結合演算の先に重複除去を選択
的に押し下げることは、グループ・バイ演算子を持たな
い select-project-join の式でのSelect Distinct質問
を処理する費用を減らすことができる。しかし、結合の
先にグループ・バイ演算子を押し下げる場合と同じよう
に、重複除去を押し下げる判断は結合順序と相互作用す
る。
演算子に関わるものであったが、データベース質問を最
適化する本発明の手法は、Select Distinct質問にも有
用である。というのは、Select Distinct質問は、グル
ープ・バイの特殊なケースと見ることができるからであ
る。そのような質問は次の形式を持つ。 Select Distinct <columnlist> From <tablelist> Where condl....condn Select Distinct文節があることにより、返答、あるい
は、質問処理中に作られた中間関係の中の重複したタプ
ルを除くことができる。結合演算の先に重複除去を選択
的に押し下げることは、グループ・バイ演算子を持たな
い select-project-join の式でのSelect Distinct質問
を処理する費用を減らすことができる。しかし、結合の
先にグループ・バイ演算子を押し下げる場合と同じよう
に、重複除去を押し下げる判断は結合順序と相互作用す
る。
【0056】重複の除去は、集約が計算されず、グルー
プ・バイが射影リストのすべての列にある場合のグルー
プ化の特殊ケースと見ることができる。具体的には、重
複除去演算は、注釈をつけられた結合木のどの節にも押
し下げることができる。さらに、複数の節にそのような
グループ化を適用することは冗長でない。したがって、
重複除去は、単純合同グループ化特性(第2の変換)と
してモデル化される。単純合同グループ化特性は、集約
列がないので、あらゆる左深木のすべての節に対するSe
lect Distinct質問においては、僅かにしか活かされな
いことに留意されたい。
プ・バイが射影リストのすべての列にある場合のグルー
プ化の特殊ケースと見ることができる。具体的には、重
複除去演算は、注釈をつけられた結合木のどの節にも押
し下げることができる。さらに、複数の節にそのような
グループ化を適用することは冗長でない。したがって、
重複除去は、単純合同グループ化特性(第2の変換)と
してモデル化される。単純合同グループ化特性は、集約
列がないので、あらゆる左深木のすべての節に対するSe
lect Distinct質問においては、僅かにしか活かされな
いことに留意されたい。
【0057】本発明には、例として次のような実施態様
が含まれる。 (1)節で結合された関係を持つ関係データベースの質
問を最適化する方法であって、(a)処理を行うため
に、グループ化演算子を持つ最適化すべき質問を受け取
るステップと、(b)前記質問に対し、内部の各結合節
に先行してグループ化演算子を置くことを考慮して複数
の実行計画を生成するステップと、(c)前記複数の実
行計画に対して費用を見積もるステップと、(d)見積
もられた費用が最も低い実行計画を選択するステップ
と、を含む方法。 (2)前記ステップ(b)が、(b1)前記質問に対し
てグループ化列および集約列を識別するステップと、
(b2)前記質問に対するグループ化列および集約列に
基づいて、前記実行計画のどの結合節がグループ・バイ
結合節に変換できるかを判断するステップと、を有す
る、上記(1)に記載の方法。
が含まれる。 (1)節で結合された関係を持つ関係データベースの質
問を最適化する方法であって、(a)処理を行うため
に、グループ化演算子を持つ最適化すべき質問を受け取
るステップと、(b)前記質問に対し、内部の各結合節
に先行してグループ化演算子を置くことを考慮して複数
の実行計画を生成するステップと、(c)前記複数の実
行計画に対して費用を見積もるステップと、(d)見積
もられた費用が最も低い実行計画を選択するステップ
と、を含む方法。 (2)前記ステップ(b)が、(b1)前記質問に対し
てグループ化列および集約列を識別するステップと、
(b2)前記質問に対するグループ化列および集約列に
基づいて、前記実行計画のどの結合節がグループ・バイ
結合節に変換できるかを判断するステップと、を有す
る、上記(1)に記載の方法。
【0058】(3)前記ステップ(b)が、(b3)前
記結合節がグループ・バイ結合節に変換できる場合、部
分質問RjとSjとの結合演算のそれぞれに対して、グル
ープ・バイ(Rj)とSjとの結合演算、および、グルー
プ・バイ(Sj)とRjとの結合演算をするための実行計
画を生成するステップをさらに有する、上記(2)に記
載の方法。 (4)前記ステップ(b2)が、前記質問の集約関数が
合併特性を満たすかを判断するステップと、前記結合節
の候補となる集約化列が前記質問の集約化列であるかを
判断するステップと、を有する、上記(2)に記載の方
法。 (5)前記ステップ(b2)が、前記結合節に対する候
補となる集約化列を識別するステップと、残りの結合演
算が外来キーを持っているかを判断するステップと、前
記候補となる集約化列が前記質問の集約化列であるかを
判断するステップと、をさらに有する、上記(2)に記
載の方法。 (6)前記ステップ(d)が、(c1)前記質問に対す
る実行計画を作成するステップと、(c2)前記結合節
に対して、見積もられた費用が最も低い実行計画を選択
するステップと、(c3)前記実行計画の結合節のいく
つかを選択的にグループ・バイ結合節に変換することに
よって等価質問を作成するステップと、を有する、上記
(2)に記載の方法。
記結合節がグループ・バイ結合節に変換できる場合、部
分質問RjとSjとの結合演算のそれぞれに対して、グル
ープ・バイ(Rj)とSjとの結合演算、および、グルー
プ・バイ(Sj)とRjとの結合演算をするための実行計
画を生成するステップをさらに有する、上記(2)に記
載の方法。 (4)前記ステップ(b2)が、前記質問の集約関数が
合併特性を満たすかを判断するステップと、前記結合節
の候補となる集約化列が前記質問の集約化列であるかを
判断するステップと、を有する、上記(2)に記載の方
法。 (5)前記ステップ(b2)が、前記結合節に対する候
補となる集約化列を識別するステップと、残りの結合演
算が外来キーを持っているかを判断するステップと、前
記候補となる集約化列が前記質問の集約化列であるかを
判断するステップと、をさらに有する、上記(2)に記
載の方法。 (6)前記ステップ(d)が、(c1)前記質問に対す
る実行計画を作成するステップと、(c2)前記結合節
に対して、見積もられた費用が最も低い実行計画を選択
するステップと、(c3)前記実行計画の結合節のいく
つかを選択的にグループ・バイ結合節に変換することに
よって等価質問を作成するステップと、を有する、上記
(2)に記載の方法。
【0059】(7)データベース管理システムのための
質問最適化手段であって、関係データベースと、質問の
少なくとも1つの節に関連するグループ化演算子を持つ
最適化すべき質問を受け取る手段と、前記質問に対し、
内部の各結合節に先行してグループ化演算子を置くこと
を考慮して複数の実行計画を生成する手段と、前記複数
の実行計画に対して費用を見積もる手段と、見積もられ
た費用が最も低い実行計画を選択する手段と、を含むシ
ステム。 (8)前記実行計画を選択する手段が、前記質問に対す
るグループ化列および集約列を識別する手段と、前記質
問に対するグループ化列および集約列に基づいて、前記
実行計画のどの結合節がグループ・バイ結合節に変換で
きるかを判断する手段と、を有する、上記(7)に記載
のシステム。 (9)質問の実行を最適化する質問最適化手段を持つ関
係データベース・システムにおいて、改善点が、グルー
プ化演算子を含む質問に関し、実行計画の複数の内部の
節にグループ化演算子を置くことを考慮することによっ
て前記質問を最適化することを有するシステム。
質問最適化手段であって、関係データベースと、質問の
少なくとも1つの節に関連するグループ化演算子を持つ
最適化すべき質問を受け取る手段と、前記質問に対し、
内部の各結合節に先行してグループ化演算子を置くこと
を考慮して複数の実行計画を生成する手段と、前記複数
の実行計画に対して費用を見積もる手段と、見積もられ
た費用が最も低い実行計画を選択する手段と、を含むシ
ステム。 (8)前記実行計画を選択する手段が、前記質問に対す
るグループ化列および集約列を識別する手段と、前記質
問に対するグループ化列および集約列に基づいて、前記
実行計画のどの結合節がグループ・バイ結合節に変換で
きるかを判断する手段と、を有する、上記(7)に記載
のシステム。 (9)質問の実行を最適化する質問最適化手段を持つ関
係データベース・システムにおいて、改善点が、グルー
プ化演算子を含む質問に関し、実行計画の複数の内部の
節にグループ化演算子を置くことを考慮することによっ
て前記質問を最適化することを有するシステム。
【0060】
【発明の効果】本発明は、グループ・バイ演算子を持っ
た関係データベースの質問において、グループ・バイ演
算子を実行計画の内部の節にすることにより、データベ
ース質問を最適化する効果を奏する。
た関係データベースの質問において、グループ・バイ演
算子を実行計画の内部の節にすることにより、データベ
ース質問を最適化する効果を奏する。
【図1】本発明による関係データベース管理システムの
ブロック図。
ブロック図。
【図2】代表的な従来の左深結合木の概略図。
【図3】図2に示した結合木の代表的な拡張左深結合木
の概略図で、図3(A)はグループ・バイ演算子が1つ
の内部の節にあることを示し、図3(B)はグループ・
バイ演算子が別の内部の節にあることを示す。
の概略図で、図3(A)はグループ・バイ演算子が1つ
の内部の節にあることを示し、図3(B)はグループ・
バイ演算子が別の内部の節にあることを示す。
【図4】本発明の実施例による変換選択ルーチンのフロ
ーチャート。
ーチャート。
【図5】もう一つの、代表的な従来の左深結合木の概略
図。
図。
【図6】図5に示した結合木に等しい拡張された左深結
合木の概略図であり、図6(A)はグループ・バイが複
数適用された結合木を示し、図6(B)はグループ・バ
イが1つ適用された結合木を示す。
合木の概略図であり、図6(A)はグループ・バイが複
数適用された結合木を示し、図6(B)はグループ・バ
イが1つ適用された結合木を示す。
【図7】変換の適用可能性を示すための左深結合木の概
略図で、図7(A)は従来の最適化手段によって作られ
た結合木、図7(B)は第1の変換を適用した結合木、
図7(C)は第2の変換を適用した結合木を示す。
略図で、図7(A)は従来の最適化手段によって作られ
た結合木、図7(B)は第1の変換を適用した結合木、
図7(C)は第2の変換を適用した結合木を示す。
【図8】本発明による最適化手段の基本動作を示すフロ
ーチャート。
ーチャート。
【図9】本発明の実施例による最適化ルーチンと関連す
る基本動作を示すフローチャート。
る基本動作を示すフローチャート。
【図10】本発明による、代表的な拡張最適化ルーチン
のフローチャート。
のフローチャート。
2 関係データベース管理システム 10 質問 12 最適化手段 14 費用情報 16 関係実行エンジン 18 関係テーブル 20、32 従来の左深結合木 24、28、34、36 拡張左深結合木 84 従来の最適化手段によって作られた結
合木 86 第1の変換を適用した結合木 88 第2の変換を適用した結合木
合木 86 第1の変換を適用した結合木 88 第2の変換を適用した結合木
Claims (1)
- 【請求項1】 節で結合された関係を持つ関係データベ
ースの質問を最適化する方法であって、 (a)処理を行うために、グループ化演算子を持つ最適
化すべき質問を受け取るステップと、 (b)前記質問に対し、内部の各結合節に先行してグル
ープ化演算子を置くことを考慮して複数の実行計画を生
成するステップと、 (c)前記複数の実行計画に対して費用を見積もるステ
ップと、 (d)見積もられた費用が最も低い実行計画を選択する
ステップと、 を含む方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US27020994A | 1994-07-01 | 1994-07-01 | |
US270,209 | 1994-07-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0855138A true JPH0855138A (ja) | 1996-02-27 |
Family
ID=23030366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7160778A Pending JPH0855138A (ja) | 1994-07-01 | 1995-06-27 | 関係データベースの質問を最適化する方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5598559A (ja) |
JP (1) | JPH0855138A (ja) |
DE (1) | DE19515020A1 (ja) |
GB (1) | GB2290893A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010501948A (ja) * | 2006-08-25 | 2010-01-21 | サーセン コーポレイション | 文書ベースシステムおよびその実現方法 |
Families Citing this family (124)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2146171C (en) * | 1995-04-03 | 2000-01-11 | Bernhard Schiefer | Method for estimating cardinalities for query processing in a relational database management system |
US5778364A (en) * | 1996-01-02 | 1998-07-07 | Verity, Inc. | Evaluation of content of a data set using multiple and/or complex queries |
US5832475A (en) * | 1996-03-29 | 1998-11-03 | International Business Machines Corporation | Database system and method employing data cube operator for group-by operations |
US5721896A (en) * | 1996-05-13 | 1998-02-24 | Lucent Technologies Inc. | Method for skew resistant join size estimation |
US6026390A (en) * | 1996-05-29 | 2000-02-15 | At&T Corp | Cost-based maintenance of materialized views |
US5761654A (en) * | 1996-06-05 | 1998-06-02 | Oracle Corporation | Memory structure and method for tuning a database statement using a join-tree data structure representation, including selectivity factors, of a master table and detail table |
KR20000029942A (ko) * | 1996-08-12 | 2000-05-25 | 후지야마 아키라 | 바이오리엑터의제조방법 |
US5822747A (en) * | 1996-08-23 | 1998-10-13 | Tandem Computers, Inc. | System and method for optimizing database queries |
US5987449A (en) * | 1996-08-23 | 1999-11-16 | At&T Corporation | Queries on distributed unstructured databases |
US5999926A (en) * | 1996-08-23 | 1999-12-07 | At&T Corp. | View maintenance for unstructured databases |
JP3777666B2 (ja) * | 1996-08-28 | 2006-05-24 | 株式会社日立製作所 | データベース処理方法およびシステム |
US5822751A (en) * | 1996-12-16 | 1998-10-13 | Microsoft Corporation | Efficient multidimensional data aggregation operator implementation |
US5899986A (en) * | 1997-02-10 | 1999-05-04 | Oracle Corporation | Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer |
US6138111A (en) * | 1997-05-02 | 2000-10-24 | Informix Software, Inc. | Cardinality-based join ordering |
US5956706A (en) * | 1997-05-09 | 1999-09-21 | International Business Machines Corporation | Method and system for limiting the cardinality of an SQL query result |
US5963936A (en) * | 1997-06-30 | 1999-10-05 | International Business Machines Corporation | Query processing system that computes GROUPING SETS, ROLLUP, and CUBE with a reduced number of GROUP BYs in a query graph model |
US5950186A (en) * | 1997-08-15 | 1999-09-07 | Microsoft Corporation | Database system index selection using cost evaluation of a workload for multiple candidate index configurations |
US5926813A (en) * | 1997-08-15 | 1999-07-20 | Microsoft Corporation | Database system index selection using cost evaluation of a workload for multiple candidate index configurations |
US5913206A (en) * | 1997-08-15 | 1999-06-15 | Microsoft Corporation | Database system multi-column index selection for a workload |
US6094651A (en) * | 1997-08-22 | 2000-07-25 | International Business Machines Corporation | Discovery-driven exploration of OLAP data cubes |
US6081805A (en) * | 1997-09-10 | 2000-06-27 | Netscape Communications Corporation | Pass-through architecture via hash techniques to remove duplicate query results |
US6148295A (en) * | 1997-12-30 | 2000-11-14 | International Business Machines Corporation | Method for computing near neighbors of a query point in a database |
US6199063B1 (en) | 1998-03-27 | 2001-03-06 | Red Brick Systems, Inc. | System and method for rewriting relational database queries |
US6212514B1 (en) | 1998-07-31 | 2001-04-03 | International Business Machines Corporation | Data base optimization method for estimating query and trigger procedure costs |
US6223171B1 (en) | 1998-08-25 | 2001-04-24 | Microsoft Corporation | What-if index analysis utility for database systems |
US6260037B1 (en) * | 1999-02-09 | 2001-07-10 | International Business Machines Corporation | Method and computer program product for implementing skip key processing for database grouping queries involving aggregate operations by using one or more indices |
US6370524B1 (en) * | 1999-04-02 | 2002-04-09 | Oracle Corp. | System and method for processing queries having an inner query block containing a grouping operator |
US7080062B1 (en) | 1999-05-18 | 2006-07-18 | International Business Machines Corporation | Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries |
US6202063B1 (en) * | 1999-05-28 | 2001-03-13 | Lucent Technologies Inc. | Methods and apparatus for generating and using safe constraint queries |
US6345272B1 (en) * | 1999-07-27 | 2002-02-05 | Oracle Corporation | Rewriting queries to access materialized views that group along an ordered dimension |
US6339770B1 (en) | 1999-08-12 | 2002-01-15 | International Business Machines Corporation | Query simplification and optimization involving eliminating grouping column from group by operation corresponds to group by item that is constant |
US6934699B1 (en) * | 1999-09-01 | 2005-08-23 | International Business Machines Corporation | System and method for loading a cache with query results |
US7120638B1 (en) * | 1999-09-21 | 2006-10-10 | International Business Machines Corporation | Method, system, program, and data structure for cleaning a database table |
US6920443B1 (en) | 1999-09-21 | 2005-07-19 | International Business Machines, Corporation | Method, system, program, and data structure for transforming database tables |
US6965888B1 (en) | 1999-09-21 | 2005-11-15 | International Business Machines Corporation | Method, system, program, and data structure for cleaning a database table using a look-up table |
US6748389B1 (en) | 1999-09-21 | 2004-06-08 | International Business Machines Corporation | Method, system, and program for inverting columns in a database table |
US6604095B1 (en) | 1999-09-21 | 2003-08-05 | International Business Machines Corporation | Method, system, program, and data structure for pivoting columns in a database table |
US6430550B1 (en) * | 1999-12-03 | 2002-08-06 | Oracle Corporation | Parallel distinct aggregates |
US6996793B1 (en) | 2000-03-15 | 2006-02-07 | Cadence Design Systems, Inc. | Methods and apparatus for storing and manipulating diagonal interconnect lines of a multidimensional integrated circuit design |
US6721724B1 (en) * | 2000-03-31 | 2004-04-13 | Microsoft Corporation | Validating multiple execution plans for database queries |
CA2307155A1 (en) * | 2000-04-28 | 2001-10-28 | Ibm Canada Limited-Ibm Canada Limitee | Execution of database queries including filtering |
US7133858B1 (en) * | 2000-06-30 | 2006-11-07 | Microsoft Corporation | Partial pre-aggregation in relational database queries |
US6574623B1 (en) * | 2000-08-15 | 2003-06-03 | International Business Machines Corporation | Query transformation and simplification for group by queries with rollup/grouping sets in relational database management systems |
JP3895934B2 (ja) * | 2001-01-31 | 2007-03-22 | 株式会社東芝 | 仕様操作装置 |
DE10104831A1 (de) * | 2001-02-01 | 2002-08-08 | Sap Ag | Datenstruktur für Informationssysteme |
US7360205B2 (en) * | 2001-02-09 | 2008-04-15 | International Business Machines Corporation | Minimizing interaction costs among components of computer programs |
US6775662B1 (en) * | 2001-05-21 | 2004-08-10 | Oracle International Corporation | Group pruning from cube, rollup, and grouping sets |
US6691101B2 (en) * | 2001-06-21 | 2004-02-10 | Sybase, Inc. | Database system providing optimization of group by operator over a union all |
CA2357937A1 (en) | 2001-09-28 | 2003-03-28 | Ibm Canada Limited-Ibm Canada Limitee | Database diagnostic system and method |
US7158994B1 (en) | 2001-09-28 | 2007-01-02 | Oracle International Corporation | Object-oriented materialized views |
US7062481B2 (en) * | 2001-09-28 | 2006-06-13 | Ncr Corp. | Eliminating group-by operations in a join plan |
US8140568B2 (en) * | 2001-12-13 | 2012-03-20 | International Business Machines Corporation | Estimation and use of access plan statistics |
US7111020B1 (en) * | 2002-03-26 | 2006-09-19 | Oracle International Corporation | Incremental refresh of materialized views containing rank function, and rewrite of queries containing rank or rownumber or min/max aggregate functions using such a materialized view |
US7213011B1 (en) * | 2002-04-08 | 2007-05-01 | Oracle International Corporation | Efficient processing of multi-column and function-based in-list predicates |
US6598044B1 (en) * | 2002-06-25 | 2003-07-22 | Microsoft Corporation | Method for choosing optimal query execution plan for multiple defined equivalent query expressions |
US20040002956A1 (en) * | 2002-06-28 | 2004-01-01 | Microsoft Corporation | Approximate query processing using multiple samples |
US7822740B2 (en) * | 2002-08-29 | 2010-10-26 | International Business Machines Corporation | Estimation of input/output requirements for table probe in join processing |
US7107277B1 (en) * | 2002-12-17 | 2006-09-12 | Microsoft Corporation | Programmable calculation engine |
US20040225571A1 (en) * | 2003-05-06 | 2004-11-11 | Urali Prem S. | Model for e-business scenario correlation |
US20050027690A1 (en) | 2003-07-29 | 2005-02-03 | International Business Machines Corporation | Dynamic selection of optimal grouping sequence at runtime for grouping sets, rollup and cube operations in SQL query processing |
US7426522B2 (en) * | 2003-09-23 | 2008-09-16 | International Business Machines Corporation | Object oriented query path expression to relational outer join translator method, system, article of manufacture, and computer program product |
US7383246B2 (en) | 2003-10-31 | 2008-06-03 | International Business Machines Corporation | System, method, and computer program product for progressive query processing |
US7720840B2 (en) * | 2004-01-08 | 2010-05-18 | International Business Machines Corporation | Method applying transitive closure to group by and order by clauses |
US7343366B2 (en) | 2004-03-30 | 2008-03-11 | International Business Machines Corporation | Group-By result size estimation |
US7734602B2 (en) | 2004-04-14 | 2010-06-08 | Oracle International Corporation | Choosing whether to use a delayed index maintenance depending on the portion of the materialized view (MV) changed |
US8478742B2 (en) * | 2004-04-14 | 2013-07-02 | Oracle Corporation | Using estimated cost to refresh a set of materialized views (MVS) |
US7890497B2 (en) | 2004-04-14 | 2011-02-15 | Oracle International Corporation | Using estimated cost to schedule an order for refreshing a set of materialized views (MVS) |
US7343370B2 (en) * | 2005-03-07 | 2008-03-11 | Hewlett-Packard Development Company, L.P. | Plan generation in database query optimizers through specification of plan patterns |
US7343367B2 (en) * | 2005-05-12 | 2008-03-11 | International Business Machines Corporation | Optimizing a database query that returns a predetermined number of rows using a generated optimized access plan |
US7512600B2 (en) * | 2005-06-10 | 2009-03-31 | Hewlett-Packard Development Company, L.P. | Use of multi-join operator and rules as framework for join tree processing in database systems |
US20070162425A1 (en) * | 2006-01-06 | 2007-07-12 | International Business Machines Corporation | System and method for performing advanced cost/benefit analysis of asynchronous operations |
US9524317B2 (en) * | 2007-08-24 | 2016-12-20 | International Business Machines Corporation | Optimization of aggregate queries in database management systems using an early out join when processing min and max functions |
US10162851B2 (en) | 2010-04-19 | 2018-12-25 | Salesforce.Com, Inc. | Methods and systems for performing cross store joins in a multi-tenant store |
US8447754B2 (en) | 2010-04-19 | 2013-05-21 | Salesforce.Com, Inc. | Methods and systems for optimizing queries in a multi-tenant store |
US8356027B2 (en) * | 2010-10-07 | 2013-01-15 | Sap Ag | Hybrid query execution plan generation and cost model evaluation |
US9805108B2 (en) | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US8572031B2 (en) | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US10366100B2 (en) | 2012-07-26 | 2019-07-30 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10614098B2 (en) | 2010-12-23 | 2020-04-07 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US10713280B2 (en) | 2010-12-23 | 2020-07-14 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10997211B2 (en) | 2010-12-23 | 2021-05-04 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US10346430B2 (en) | 2010-12-23 | 2019-07-09 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10977277B2 (en) | 2010-12-23 | 2021-04-13 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US9881034B2 (en) | 2015-12-15 | 2018-01-30 | Mongodb, Inc. | Systems and methods for automating management of distributed databases |
US10698775B2 (en) | 2016-05-31 | 2020-06-30 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US9262462B2 (en) | 2012-07-26 | 2016-02-16 | Mongodb, Inc. | Aggregation framework system architecture and method |
US8996463B2 (en) * | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10262050B2 (en) | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
US10740353B2 (en) | 2010-12-23 | 2020-08-11 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US8635206B2 (en) * | 2011-06-30 | 2014-01-21 | International Business Machines Corporation | Database query optimization |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10872095B2 (en) | 2012-07-26 | 2020-12-22 | Mongodb, Inc. | Aggregation framework system architecture and method |
US9063974B2 (en) | 2012-10-02 | 2015-06-23 | Oracle International Corporation | Hardware for table scan acceleration |
US9229979B2 (en) * | 2012-12-11 | 2016-01-05 | Microsoft Technology Licensing, Llc | Optimizing parallel queries using interesting distributions |
US9317548B2 (en) | 2013-01-30 | 2016-04-19 | International Business Machines Corporation | Reducing collisions within a hash table |
US9311359B2 (en) | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9471710B2 (en) | 2013-06-14 | 2016-10-18 | International Business Machines Corporation | On-the-fly encoding method for efficient grouping and aggregation |
US9367556B2 (en) | 2013-06-14 | 2016-06-14 | International Business Machines Corporation | Hashing scheme using compact array tables |
US10120902B2 (en) | 2014-02-20 | 2018-11-06 | Citus Data Bilgi Islemleri Ticaret A.S. | Apparatus and method for processing distributed relational algebra operators in a distributed database |
US9760599B2 (en) | 2014-04-09 | 2017-09-12 | International Business Machines Corporation | Group-by processing for data containing singleton groups |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US10303791B2 (en) | 2015-03-20 | 2019-05-28 | International Business Machines Corporation | Efficient join on dynamically compressed inner for improved fit into cache hierarchy |
US9922064B2 (en) | 2015-03-20 | 2018-03-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US10650011B2 (en) | 2015-03-20 | 2020-05-12 | International Business Machines Corporation | Efficient performance of insert and point query operations in a column store |
US10108653B2 (en) | 2015-03-27 | 2018-10-23 | International Business Machines Corporation | Concurrent reads and inserts into a data structure without latching or waiting by readers |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
US10496669B2 (en) | 2015-07-02 | 2019-12-03 | Mongodb, Inc. | System and method for augmenting consensus election in a distributed database |
US10394822B2 (en) | 2015-09-25 | 2019-08-27 | Mongodb, Inc. | Systems and methods for data conversion and comparison |
US10423626B2 (en) | 2015-09-25 | 2019-09-24 | Mongodb, Inc. | Systems and methods for data conversion and comparison |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
US10846411B2 (en) | 2015-09-25 | 2020-11-24 | Mongodb, Inc. | Distributed database systems and methods with encrypted storage engines |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US10635671B2 (en) | 2016-10-05 | 2020-04-28 | Oracle International Corporation | Sort-merge band join optimization |
US10503731B2 (en) | 2016-10-11 | 2019-12-10 | International Business Machines Corporation | Efficient analysis of distinct aggregations |
KR101919771B1 (ko) | 2017-06-12 | 2019-02-11 | 주식회사 티맥스데이터 | 데이터베이스 애플리케이션을 위한 최적화 기법 |
US10866868B2 (en) | 2017-06-20 | 2020-12-15 | Mongodb, Inc. | Systems and methods for optimization of database operations |
US10558660B2 (en) * | 2017-07-24 | 2020-02-11 | Oracle International Corporation | Redundant group by and distinct removal |
US11704317B2 (en) | 2020-02-21 | 2023-07-18 | Oracle International Corporation | Partial group by for eager group by placement query plans |
US11416489B2 (en) * | 2020-11-25 | 2022-08-16 | Oracle International Corporation | Early grouping optimization for SQL statements by normalizing arithmetic expressions in aggregates |
US11636103B2 (en) | 2020-11-25 | 2023-04-25 | Oracle International Corporation | Early grouping optimization for SQL statements with conditional expressions |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5448727A (en) * | 1991-04-30 | 1995-09-05 | Hewlett-Packard Company | Domain based partitioning and reclustering of relations in object-oriented relational database management systems |
FR2696853B1 (fr) * | 1992-10-12 | 1994-12-23 | Bull Sa | Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant. |
US5469568A (en) * | 1993-01-07 | 1995-11-21 | International Business Machines Corporation | Method for choosing largest selectivities among eligible predicates of join equivalence classes for query optimization |
-
1995
- 1995-04-24 DE DE19515020A patent/DE19515020A1/de not_active Withdrawn
- 1995-06-12 GB GB9511911A patent/GB2290893A/en not_active Withdrawn
- 1995-06-27 JP JP7160778A patent/JPH0855138A/ja active Pending
-
1996
- 1996-05-28 US US08/653,804 patent/US5598559A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010501948A (ja) * | 2006-08-25 | 2010-01-21 | サーセン コーポレイション | 文書ベースシステムおよびその実現方法 |
Also Published As
Publication number | Publication date |
---|---|
US5598559A (en) | 1997-01-28 |
DE19515020A1 (de) | 1996-01-04 |
GB9511911D0 (en) | 1995-08-09 |
GB2290893A (en) | 1996-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0855138A (ja) | 関係データベースの質問を最適化する方法 | |
Chaudhuri et al. | Including group-by in query optimization | |
Li et al. | RankSQL: query algebra and optimization for relational top-k queries | |
US6947927B2 (en) | Method and apparatus for exploiting statistics on query expressions for optimization | |
Hristidis et al. | Discover: Keyword search in relational databases | |
Gravano et al. | Using q-grams in a DBMS for approximate string processing | |
Florescu et al. | Query optimization in the presence of limited access patterns | |
US6947934B1 (en) | Aggregate predicates and search in a database management system | |
US7599925B2 (en) | Using query expression signatures in view matching | |
US6965891B1 (en) | Method and mechanism for partition pruning | |
Silva et al. | The similarity join database operator | |
US7240044B2 (en) | Query optimization by sub-plan memoization | |
US7577647B2 (en) | Combining nested aggregators | |
Chatziantoniou et al. | The MD-join: An operator for complex OLAP | |
Wu et al. | Using histograms to estimate answer sizes for XML queries | |
Li et al. | RankSQL: supporting ranking queries in relational database management systems | |
McHugh et al. | Optimizing branching path expressions | |
Xu | Search control in semantic query optimization | |
Shivakumar et al. | Filtering with approximate predicates | |
Muntés-Mulero et al. | Cgo: a sound genetic optimizer for cyclic query graphs | |
Tsois et al. | Cost-based optimization of aggregation star queries on hierarchically clustered data warehouses. | |
Leela et al. | Schema-conscious XML indexing | |
KR100541531B1 (ko) | 객체 지향 디비엠에스에서 경로식의 부질의 변환을 통한 질의 처리 방법 | |
Chao et al. | Estimating temporary files sizes in distributed realtional database systems | |
Xu et al. | Massive RDF Query Processing Efficiently in Spark Environment Based on Semantic Connection Set |