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
Application number
JP7160778A
Other languages
English (en)
Inventor
Surajit Chaudhuri
スラジット・チャウデュリ
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH0855138A publication Critical patent/JPH0855138A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access 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)を参照されたい。し
たがって、従来の手法の多くは、関係の大きさおよび結
合の費用を減らすためにグループ化が結合に先行する場
合の変換による利益を考慮していないか実現していな
い。
【0004】最近、結合演算の先にグループ・バイ演算
子を実行することを可能にする変換が見い出された。例
えば、「結合前のグループ・バイの実行」(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)にす
ることによって、データベースのための質問を最適化す
る。本発明では、節で結合された関係を持つ質問が、関
係データベースのために最適化される。最適化の手続き
(プロシージャ)は、最適化すべきグループ・バイを持
つ質問を受け取り、グループ・バイを内部の各結合節に
先行して置くことを考慮した複数の質問実行計画を生成
し、実行計画の費用を見積もり、最も費用の低い実行計
画を選択することからなる。また、本発明は、装置とし
て具体化することもできる。
【0007】本発明は、グループ・バイ演算子を最適化
する強力な手法を提供する点に利点がある。この結果、
最適化手段すなわちオプティマイザは、質問のためのよ
りよい実行計画を選択することができるので、いっそう
効率良く動作することができる。
【0008】
【実施例】図1ないし図10を参照して、本発明の実施
例を以下に述べる。当業者には明らかなように、本発明
は、以下の限られた実施例を超えて拡張できるので、以
下の説明は例として記述したものであることを理解され
たい。
【0009】本発明は、グループ・バイ演算子を持つ質
問を最適化するための方法と装置を含む関係データベー
ス・システムに関わる。図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つの形式を持つ
ものと仮定する。
【0011】本発明の動作を、ある会社とそのビジネス
に関する情報を含むデータベースへの代表的な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)集約関数が使用される。これらの注釈の意味はデー
タベース分野でよく知られている。さらに多くの注釈が
あるが、ここでの議論に密接な関係はない。
【0013】従来の質問の実行計画は、構文上、根(ル
ート)がグループ・バイ演算であり、各葉(リーフ)節
が走査演算である、注釈された結合木として表すことが
できる。従来、注釈された結合木の内部の節は常に結合
演算であった。結合節の注釈は、選択条件および射影属
性とともに、結合方法の選択を含む。選択条件および射
影はできる限り早い時点でつけられる。図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)に示した走査節は、
関係を表す名前をつけてある。
【0015】節nの結合列は、ある先祖節nで評価され
る結合述語に参加する列である。節nに必要とされる列
は、節nの結合列であるか、または、質問のグループ化
列である。節nの候補となる集約化列は、質問の集約化
列である節の列であるが必要とされる列でないものであ
る。
【0016】グループ・バイ節が左深木の節nのすぐ上
に導入される場合は、(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つのグルー
プ・バイは、拡張左深木の複数のグループ・バイ演算子
で置き換えられる。
【0019】図4は、本発明の実施例による変換選択ル
ーチン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)を参照された
い)。
【0021】与えられた左深木の節nは、次の条件、す
なわち、(i)必要とされる列nが質問のグループ化列で
あり、(ii)質問のすべての集約化列が候補となる集約化
列nであり、(iii)nの先祖である各結合節に対して、
結合が、結合の内部関係の外来キー上で等価結合述部で
あることが真実である場合、不変グループ化特性を持
つ。
【0022】さらに、左深木の節nが不変グループ化特
性を持つ場合、その先祖も不変グループ化特性を持つこ
とになる。不変グループ化特性を持つ一組の節がチェイ
ンを形成し、等価の注釈をつけられた拡張結合木は、グ
ループ・バイ演算子をチェインの中のどれか1つの節の
上に置くことによって得ることができる。不変グループ
化特性を持つ複数の節にグループ・バイを置くことは冗
長であることに留意されたい。
【0023】第2の変換も早期のグループ化を実行する
機会を利用するが、しかし、その後、先に形成された複
数のグループの合同を行う付加的なグループ化が必要に
なる場合がある。したがって、単純合同に基づいた変換
の結果として、左深木の1つのグループ・バイ演算子
は、結果として生じる拡張左深結合木の複数のグループ
・バイ演算子で置き換えることができる。それでもな
お、そのような変換は、従来の最適化手段によって得ら
れる実行計画にくらべて何倍も優れた実行計画を得るの
に役立つことが多い。
【0024】第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つの
グループを合同することができる。
【0026】したがって、質問のすべての集約化列が節
nの候補となる集約化列で、集約が合併特性(式1)を
満たすならば、与えられた左深木の節nは単純合同グル
ープ化特性を持つ。ある節が単純合同グループ化特性を
持つならば、左深結合木のそのすべての先祖も単純合同
グループ化特性を持つ。単純合同グループ化特性を持つ
節のチェインに沿った1つまたは複数の節にグループ・
バイ演算子を置くことは、新しい拡張左深木を与えられ
た左深木に等価のままにする。
【0027】不変グループ化に対比して、節のチェイン
に沿ってグループ・バイ演算子を複数適用することは冗
長ではなく、グループ化を段階的に実行する結果にな
る。例として、図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は、節が単純合同グループ化特性
を持ち、したがって、複数のグループ・バイ演算子がチ
ェインに沿って出現できる場合の木を表す。
【0031】変換について左深木の場合の文脈で述べた
が、これらの変換は、より一般化したもの、および、注
釈がつけられた枝葉の多い結合木にも適用できることに
留意されたい。さらに上記で考慮したSQLの組込み集
約関数Max、Min、および、Sumは、すべての変換に適用
できる。
【0032】質問の中で、列の集約がAll(たとえば、S
um(All amount))によって修飾される、前述の仮定につ
いても考慮してみよう。修飾語AllはSQLでデフォル
ト仕様である。この制限は簡単にゆるめることができ
る。先ず、不変グループ化変換は、Distinctによって修
飾された集約にも適用できることに留意されたい。次
に、単純合同については、質問にDistinct修飾句を持つ
集約がある場合は、Distinct列は、変換の観点からは、
質問のグループ・バイ列の一部と考えることができる。
したがって、これらの列の集約が早い時点でのグループ
化の間に計算されなくても、修飾句Allを持った集約
は、本発明の変換を用いて計算することができる。
【0033】また、必要とされる列の組が残りの列を関
数的に決める場合には、グループ・バイ演算子を呼び出
すことは冗長であることに留意されたい。そのような場
合、各グループは単集合である。最適化手段は、計画の
費用を見積もる際に、このことを認識できるように設計
されている。上には述べなかったが、変換は、Order-by
演算子、あるいは、Having演算子を持っている質問にも
適用できる。
【0034】図8は、本発明による最適化手段12の基
本動作を示すフローチャートである。先ず、最適化手段
12は処理すべき質問10を受け取る(ブロック3
8)。次に、ブロック40で、最適化手段12は、受け
取った質問10がグループ・バイ演算子を含んでいるか
どうかを判断する。受け取った質問10がグループ・バ
イ演算子を含んでいない場合、従来の最適化プロシージ
ャ42が実行される。他方、受け取った質問10がグル
ープ・バイ演算子を含んでいると判断された場合には、
本発明による拡張最適化プロシージャ44が実行され
る。従来の最適化プロシージャ42は公知であり本発明
の事項ではないので、これ以上述べない。拡張最適化プ
ロシージャ44については、図7ないし図9を参照しな
がら以下に詳しく述べる。
【0035】概略的に、最適化手段12はグループ・バ
イ演算子を持つ質問を受け取り、変換を用いて一連の代
替実行計画(実行空間)を作成し、次に、費用に基づく
手法を用いて、代替実行計画から最適の計画を選択す
る。最適化手段12の動作について概略説明したので、
次に拡張最適化プロシージャ44について述べる。
【0036】最適化効率のために、実行空間は、左深結
合木の種類になるように制限されている。左深結合木
は、内部の各節の右の子が葉であるように注釈された結
合木のことである。
【0037】図9に、少なくとも1つの結合を持った質
問について記述された、拡張最適化プロシージャ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に対して部分質問
jの全てがまだ最適化されていないと判断された場
合、次の式、すなわち、
【0039】
【数1】 で表される部分質問に対する最適計画が、拡張最適化ル
ーチンを使って決められる(ブロック62)。拡張最適
化ルーチンについては、図10を参照して以下に詳しく
述べる。ブロック62の後、処理の流れは判断ブロック
58に戻る。その結果、判断ブロック58によってすべ
ての部分質問Sjが関係Rjに関して最適化されたと判断
されるまで、ブロック58から60が繰り返される。
【0040】図10は、本発明の実施例による拡張最適
化ルーチン64のフローチャートである。拡張最適化ル
ーチン64は、Qs、すなわち、SjとRjとの結合のた
めの最適計画を生成するものである。拡張最適化ルーチ
ン64は、質問10に対するグループ化列および集約化
列を識別することから始まる(ブロック66)。
【0041】上述したように、グループ・バイ演算子が
注釈された結合木のどこに置くことができるかという制
限があるので、この最適化の間に、等価結合木が作られ
る。次に、ブロック84で、グループ・バイ演算子が関
係Sjおよび/あるいはRjのすぐ上に置くことができる
かどうか(すなわち、RjあるいはSjが単純合同特性を
満足するか)に基づいて判断が行われる。グループ・バ
イ演算子が関係Sjおよび/あるいはRjのすぐ上に置け
る場合は、ブロック86により、結合計画が作成され、
計画の費用が見積もられる。結合計画は次のものであ
る。
【0042】
【数2】 このような結合計画は、グループ・バイ演算子が結合演
算に先行するので、グループ・バイ結合計画と呼ばれ
る。グループ・バイ結合計画は、グループ・バイ演算子
を関係Sjおよび/あるいはRjのすぐ上の質問木に挿入
することによって作成される。実際には、グループ・バ
イを木の内部の節に挿入することにより、結合演算がグ
ループ・バイ結合演算によって置き換えられる。グルー
プ・バイ演算子を関係Sjおよび/あるいはRjのすぐ上
に置くことができない場合は、ブロック86はバイパス
される。次に、ブロック86がバイパスされるか否かに
かかわらず、ブロック88により、SjとRjとの結合演
算のための従来の結合計画が作られ、その費用が見積も
られる。従来の手法による結合計画は、上記「関係デー
タベース管理におけるアクセス経路の選択」に記述され
ているような手法によって作成される。
【0043】例として図2を参照すると、木20は質問
の左深結合木である。木20は、必要とされる列{deal
erid, prodid}、および、候補となる集約列{amount}
が質問のグループ化列および集約化列に一致するので、
単純合同グループ化特性を持つ節Orderを含む。したが
って、最適化中に、図10の判断ブロック84におい
て、図2の木20の場合に、グループ・バイ演算子は節
Orderの上に置くことができると決められる。
【0044】グループ・バイ結合計画の費用見積りにつ
いて以下に述べる。従来の結合計画の費用については、
たとえば上記の「関係データベース管理におけるアクセ
ス経路の選択」 に記述されている従来手法にしたが
う。グループ・バイ結合計画(これがある場合)の費用
は、従来の費用モデルへの下記の拡張によって見積もる
ことができる。
【0045】費用モデルへの拡張は、グループ化後の関
係のタプルの数を見積もる。単一列のグループ化におい
ては、グループの数は、その列の異なる値の数に等し
い。しかし、複数列のグループ化では、グループの数の
見積もりを計算する必要がある。
【0046】一つの費用モデル(複数列の費用モデル)
は、次の式を使用する。複数列の費用モデル:グループ
化列は独立していると仮定する。異なる値の数は、(a)
関係の中のタプルの数、および、(b)グループ化列の特
異な値の数の積、の2つの数量のうちの最小であると推
定する。しかし、実際問題としては、グループの数がよ
り小さいものが、上述の費用モデルによって予測された
ものよりも、現実的である。したがって、複数列の費用
モデルは、グループ化列が独立しているという仮定に基
づいて比較的大きな数のグループを予測するので、この
モデルはグループ化を行わないようにする効果を持つ。
上述の費用モデルは慎重さを見込むように選択されてい
るので、この費用モデルの下で早期のグループ・バイが
行われる場合は、"圧倒的な"数になる可能性がある。
【0047】もう一つの費用モデル(最大値費用モデ
ル)は、"楽天的"、すなわち、より少ないグループを予
測するもので、次の式を使用する。 最大値費用モデル:異なる値の数が、すべてのグループ
化列の濃度(cardinality)の最大値に等しいと仮定す
る。言い換えれば、列は"階層的"構造を持つ。そのよう
なモデルでは、グループ化が奨励される。
【0048】再び、図10に戻ると、拡張最適化ルーチ
ン64の最後のプロシージャは、ブロック90で、見積
もられた費用が最も低い計画を代替計画から選択する。
ブロック90で選択された計画は、関心をひく順序(in
teresting order: 関心順序)のそれぞれの、
【0049】
【数3】 すなわち、関係Sj、Rjのすぐ上の節に対して、最良の
計画である。これについて次に簡単に述べる。
【0050】関心順序とは、(a)順序づけが質問のグル
ープ・バイ文節で指定されたものと同じ場合か、あるい
は、(b)順序づけが将来のソート・マージ結合に有用な
場合に、後で役立つ中間関係のタプルの順序付けのこと
である。(b)の組は、将来の結合列のすべてからなる。
従来の最適化プロシージャと同じように、最適化手段1
2は、2つの関係の間(あるいは、中間関係と基礎的関
係との間)の結合を考慮するときにアクセス経路および
結合方法のすべてを考慮した結果生じる関心順序を生成
する。
【0051】いままでの最適化手段と同様に、関心順序
の従来の組が利用される。しかし、本発明の新規性の一
部として、本発明にしたがいグループ・バイ節が内部に
起こり、複数のグループ化列を持つことができることは
重要な注目点であり、グループ・バイがソートを使って
実施される場合に、グループ化列の大項目から小項目へ
の順序づけを適切に選択することは有益である。
【0052】上記の関心順序の組を減らすために、次の
条件、すなわち、(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もまたソートのための主たる列として考慮される。
【0054】最後に、最適計画は、不変グループ・バイ
節に変換できる単純合同グループ・バイ節があるか調べ
られる。そのような後処理は、冗長なグループ・バイ演
算子を見つけるのに役立つ(不変グループ・バイ演算子
を複数適用するのは冗長である)。
【0055】上述した本発明の実施例はグループ・バイ
演算子に関わるものであったが、データベース質問を最
適化する本発明の手法は、Select Distinct質問にも有
用である。というのは、Select Distinct質問は、グル
ープ・バイの特殊なケースと見ることができるからであ
る。そのような質問は次の形式を持つ。 Select Distinct <columnlist> From <tablelist> Where condl....condn Select Distinct文節があることにより、返答、あるい
は、質問処理中に作られた中間関係の中の重複したタプ
ルを除くことができる。結合演算の先に重複除去を選択
的に押し下げることは、グループ・バイ演算子を持たな
い select-project-join の式でのSelect Distinct質問
を処理する費用を減らすことができる。しかし、結合の
先にグループ・バイ演算子を押し下げる場合と同じよう
に、重複除去を押し下げる判断は結合順序と相互作用す
る。
【0056】重複の除去は、集約が計算されず、グルー
プ・バイが射影リストのすべての列にある場合のグルー
プ化の特殊ケースと見ることができる。具体的には、重
複除去演算は、注釈をつけられた結合木のどの節にも押
し下げることができる。さらに、複数の節にそのような
グループ化を適用することは冗長でない。したがって、
重複除去は、単純合同グループ化特性(第2の変換)と
してモデル化される。単純合同グループ化特性は、集約
列がないので、あらゆる左深木のすべての節に対するSe
lect Distinct質問においては、僅かにしか活かされな
いことに留意されたい。
【0057】本発明には、例として次のような実施態様
が含まれる。 (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)に記載の方法。
【0059】(7)データベース管理システムのための
質問最適化手段であって、関係データベースと、質問の
少なくとも1つの節に関連するグループ化演算子を持つ
最適化すべき質問を受け取る手段と、前記質問に対し、
内部の各結合節に先行してグループ化演算子を置くこと
を考慮して複数の実行計画を生成する手段と、前記複数
の実行計画に対して費用を見積もる手段と、見積もられ
た費用が最も低い実行計画を選択する手段と、を含むシ
ステム。 (8)前記実行計画を選択する手段が、前記質問に対す
るグループ化列および集約列を識別する手段と、前記質
問に対するグループ化列および集約列に基づいて、前記
実行計画のどの結合節がグループ・バイ結合節に変換で
きるかを判断する手段と、を有する、上記(7)に記載
のシステム。 (9)質問の実行を最適化する質問最適化手段を持つ関
係データベース・システムにおいて、改善点が、グルー
プ化演算子を含む質問に関し、実行計画の複数の内部の
節にグループ化演算子を置くことを考慮することによっ
て前記質問を最適化することを有するシステム。
【0060】
【発明の効果】本発明は、グループ・バイ演算子を持っ
た関係データベースの質問において、グループ・バイ演
算子を実行計画の内部の節にすることにより、データベ
ース質問を最適化する効果を奏する。
【図面の簡単な説明】
【図1】本発明による関係データベース管理システムの
ブロック図。
【図2】代表的な従来の左深結合木の概略図。
【図3】図2に示した結合木の代表的な拡張左深結合木
の概略図で、図3(A)はグループ・バイ演算子が1つ
の内部の節にあることを示し、図3(B)はグループ・
バイ演算子が別の内部の節にあることを示す。
【図4】本発明の実施例による変換選択ルーチンのフロ
ーチャート。
【図5】もう一つの、代表的な従来の左深結合木の概略
図。
【図6】図5に示した結合木に等しい拡張された左深結
合木の概略図であり、図6(A)はグループ・バイが複
数適用された結合木を示し、図6(B)はグループ・バ
イが1つ適用された結合木を示す。
【図7】変換の適用可能性を示すための左深結合木の概
略図で、図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の変換を適用した結合木

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 節で結合された関係を持つ関係データベ
    ースの質問を最適化する方法であって、 (a)処理を行うために、グループ化演算子を持つ最適
    化すべき質問を受け取るステップと、 (b)前記質問に対し、内部の各結合節に先行してグル
    ープ化演算子を置くことを考慮して複数の実行計画を生
    成するステップと、 (c)前記複数の実行計画に対して費用を見積もるステ
    ップと、 (d)見積もられた費用が最も低い実行計画を選択する
    ステップと、 を含む方法。
JP7160778A 1994-07-01 1995-06-27 関係データベースの質問を最適化する方法 Pending JPH0855138A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010501948A (ja) * 2006-08-25 2010-01-21 サーセン コーポレイション 文書ベースシステムおよびその実現方法

Families Citing this family (124)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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