JPH07334529A - 問合せ最適化方法 - Google Patents
問合せ最適化方法Info
- Publication number
- JPH07334529A JPH07334529A JP7161573A JP16157395A JPH07334529A JP H07334529 A JPH07334529 A JP H07334529A JP 7161573 A JP7161573 A JP 7161573A JP 16157395 A JP16157395 A JP 16157395A JP H07334529 A JPH07334529 A JP H07334529A
- Authority
- JP
- Japan
- Prior art keywords
- predicate
- node
- query
- label
- predicates
- 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
-
- 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/99933—Query processing, i.e. searching
-
- 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/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- 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/99933—Query processing, i.e. searching
- Y10S707/99935—Query augmenting and refining, e.g. inexact access
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】 データベースにおいて、制約ができるだけ早
く適用されるように制約を移動することによって問合せ
を最適化する。 【構成】 本発明の最適化技術は、述語プッシュダウン
法の一般化であり、述語移動法と呼ばれる。これは、ま
ず述語を問合せグラフの他のノードに移動してから、伝
搬した述語の数を縮小する。その結果、各述語は、問合
せの計算における有利な点で適用される。好ましい実施
例では、述語を問合せグラフの上方へ伝搬させてから、
問合せグラフの下方へ伝搬させることによって述語を移
動し、簡約により冗長な述語を除去する。簡約の最後
に、残りの述語が計算においてできるだけ早く適用され
る。述語移動法は、いくつかのブロックが集約を有して
いても、および、重複がいくつかのブロックでは保持さ
れ他のブロックでは消去されていても、適用可能であ
る。
く適用されるように制約を移動することによって問合せ
を最適化する。 【構成】 本発明の最適化技術は、述語プッシュダウン
法の一般化であり、述語移動法と呼ばれる。これは、ま
ず述語を問合せグラフの他のノードに移動してから、伝
搬した述語の数を縮小する。その結果、各述語は、問合
せの計算における有利な点で適用される。好ましい実施
例では、述語を問合せグラフの上方へ伝搬させてから、
問合せグラフの下方へ伝搬させることによって述語を移
動し、簡約により冗長な述語を除去する。簡約の最後
に、残りの述語が計算においてできるだけ早く適用され
る。述語移動法は、いくつかのブロックが集約を有して
いても、および、重複がいくつかのブロックでは保持さ
れ他のブロックでは消去されていても、適用可能であ
る。
Description
【0001】
【産業上の利用分野】本発明は、一般的に、制約伝搬に
関し、特に、制約が計算においてできるだけ早く適用さ
れるように制約を移動することによって問合せを最適化
する技術に関する。
関し、特に、制約が計算においてできるだけ早く適用さ
れるように制約を移動することによって問合せを最適化
する技術に関する。
【0002】
【従来の技術】データベースシステムは、長い間、大量
のデータを格納しそれにアクセスするために使用されて
いる。データベース内のデータは何らかの方法で編成さ
れ、データベースのユーザによってなされる問合せによ
り、そのデータベースの編成が利用され、ユーザにとっ
て有用なデータの部分が返される。最近の多くのデータ
ベースシステムは関係データベースシステムである。こ
のシステムでは、データは関係の集合によって編成され
る。各関係は列および行を有するテーブルである。列は
データのクラス(例えば、従業員名、従業員部署、およ
び給料)を定義し、行はそのデータに関係する値を含
む。従って、例えばus_employees関係は米国内の各従業
員ごとに行を有し、従業員名、従業員部署、および従業
員給料に対する列を有するという具合になる。従業員部
署および従業員給料に対する行の特定の値は、従業員名
によって指定される従業員に対するものである。データ
ベースシステムには2種類の関係がある。1つは基底関
係であり、基底関係においては、データ値がデータベー
スに実際に格納される。もう1つはビューであり、格納
されないが、基底関係のデータから直ちに構築されるも
のである。
のデータを格納しそれにアクセスするために使用されて
いる。データベース内のデータは何らかの方法で編成さ
れ、データベースのユーザによってなされる問合せによ
り、そのデータベースの編成が利用され、ユーザにとっ
て有用なデータの部分が返される。最近の多くのデータ
ベースシステムは関係データベースシステムである。こ
のシステムでは、データは関係の集合によって編成され
る。各関係は列および行を有するテーブルである。列は
データのクラス(例えば、従業員名、従業員部署、およ
び給料)を定義し、行はそのデータに関係する値を含
む。従って、例えばus_employees関係は米国内の各従業
員ごとに行を有し、従業員名、従業員部署、および従業
員給料に対する列を有するという具合になる。従業員部
署および従業員給料に対する行の特定の値は、従業員名
によって指定される従業員に対するものである。データ
ベースシステムには2種類の関係がある。1つは基底関
係であり、基底関係においては、データ値がデータベー
スに実際に格納される。もう1つはビューであり、格納
されないが、基底関係のデータから直ちに構築されるも
のである。
【0003】関係データベースシステムにおける問合せ
は、関係と、その問合せが関係からどのデータを返すか
を限定する、関係に対する制約とに関して、返したいデ
ータを定義する。例えば、us_employees関係に対する問
合せは、米国で給料が年額で10万ドルより高いすべて
の従業員の名前のリストを要求する。もちろん、リスト
上の従業員の給料が10万ドルより高いという条件が制
約である。
は、関係と、その問合せが関係からどのデータを返すか
を限定する、関係に対する制約とに関して、返したいデ
ータを定義する。例えば、us_employees関係に対する問
合せは、米国で給料が年額で10万ドルより高いすべて
の従業員の名前のリストを要求する。もちろん、リスト
上の従業員の給料が10万ドルより高いという条件が制
約である。
【0004】ほとんどの関係データベースシステムは問
合せにSQLと呼ばれる言語を使用する。上記の例の場
合のSQLによる問合せは以下のようになる。 SELECT name, pay FROM us_employees WHERE pay>100,000 このような問合せにおいて、関係のフィールド名をその
関係の属性という。従って、上記の例では、関係us_emp
loyeesは属性name、pay、およびdeptを有する。属性に
適用される制約、例えばus_employees.pay>100,000とい
う制約をその属性(この場合には属性pay)に適用可能
な述語という。
合せにSQLと呼ばれる言語を使用する。上記の例の場
合のSQLによる問合せは以下のようになる。 SELECT name, pay FROM us_employees WHERE pay>100,000 このような問合せにおいて、関係のフィールド名をその
関係の属性という。従って、上記の例では、関係us_emp
loyeesは属性name、pay、およびdeptを有する。属性に
適用される制約、例えばus_employees.pay>100,000とい
う制約をその属性(この場合には属性pay)に適用可能
な述語という。
【0005】多くのデータベースは非常に大きいため、
効率は、データベースシステムの設計の重要な側面であ
る。効率の1つの側面は問合せ最適化である。これは、
問合せを実行するのに要する計算量を、必要な時間また
はメモリ資源の量を最小化する形にすることである。問
合せ最適化の重要な部分は、制約の適用を最適化するこ
とである。制約を最適化する2つの技術として、制約の
数を最小化することと、それらの制約をできるだけ早く
適用することがある。
効率は、データベースシステムの設計の重要な側面であ
る。効率の1つの側面は問合せ最適化である。これは、
問合せを実行するのに要する計算量を、必要な時間また
はメモリ資源の量を最小化する形にすることである。問
合せ最適化の重要な部分は、制約の適用を最適化するこ
とである。制約を最適化する2つの技術として、制約の
数を最小化することと、それらの制約をできるだけ早く
適用することがある。
【0006】例えば、前の例を、もう1つの関係world_
employeesを含むように拡張する。関係world_employees
では、行はus_employeesの行と同じ属性を有する。両方
の関係に前と同様の問合せを適用すると、以下のように
なる。 SELECT name, pay FROM us_employees, world_employees WHERE pay>100,000 この問合せを計算する2つの方法がある。1つの方法
は、両方の関係からすべての行を集めてから、述語pay>
100,000を適用するというものである。もう1つの方法
は、各関係において述語を適用してから、その述語を満
たす行のみを各関係から集めるというものである。明ら
かに、第2の方法は、述語を満たさない行をコピーする
のに要する時間と、両方の関係からのすべての行を格納
するのに要するスペースとを節約し、その結果、第2の
方法のほうが効率的である。こうして、第2の方法は最
適化である。この場合、最適化は、述語が計算において
できるだけ早く適用されるように、各関係において述語
を適用することによって達成される。
employeesを含むように拡張する。関係world_employees
では、行はus_employeesの行と同じ属性を有する。両方
の関係に前と同様の問合せを適用すると、以下のように
なる。 SELECT name, pay FROM us_employees, world_employees WHERE pay>100,000 この問合せを計算する2つの方法がある。1つの方法
は、両方の関係からすべての行を集めてから、述語pay>
100,000を適用するというものである。もう1つの方法
は、各関係において述語を適用してから、その述語を満
たす行のみを各関係から集めるというものである。明ら
かに、第2の方法は、述語を満たさない行をコピーする
のに要する時間と、両方の関係からのすべての行を格納
するのに要するスペースとを節約し、その結果、第2の
方法のほうが効率的である。こうして、第2の方法は最
適化である。この場合、最適化は、述語が計算において
できるだけ早く適用されるように、各関係において述語
を適用することによって達成される。
【0007】述語をできるだけ早く適用するいくつかの
技術が知られている。これらの技術は一般に述語プッシ
ュダウン法と呼ばれている。これらの技術は、問合せグ
ラフという、最適化中の問合せを表現するデータ構造に
適用される。問合せに対する問合せグラフにおいて、そ
の問合せの部分問合せおよびビューのそれぞれがグラフ
のブロックを形成する。それらの技術のうちの1つは問
合せブロックの併合であり、H. Pirahesh, J. Hellerst
ein, and W. Hasan, "Extensible/rule basedquery rew
rite optimization in starburst", in SIGMOD 1992, p
p. 39-48、に記載されている。この技術は、問合せブロ
ックがしばしば併合することができないという事実によ
って制限される。もう1つの技術は、問合せグラフを、
評価中に前に計算される問合せブロックへと述語プッシ
ュダウンすることである。この技術は、階層的問合せ、
すなわち、非再帰的で共通の部分式を有しない問合せで
のみ有効である。これは、J. Ullman, Principles of D
atabase and Knowledgebase Systems, vol. 1 and 2, C
omputer Science Press, 1989、に記載されている。第
3の技術は、上記のUllmanの教科書に記載されたマジッ
ク集合変換に基づくものである。この第3の技術は、述
語が、別の関係が結合順序で後に現れるときに、ある関
係から当該別の関係へ移動することを可能にするもので
あり、I. Mumick, S. Finkelstein, H. Pirahesh, and
R. Ramakrishnan, "Magic Conditions", in PODS 199
0、に詳細に説明されている。
技術が知られている。これらの技術は一般に述語プッシ
ュダウン法と呼ばれている。これらの技術は、問合せグ
ラフという、最適化中の問合せを表現するデータ構造に
適用される。問合せに対する問合せグラフにおいて、そ
の問合せの部分問合せおよびビューのそれぞれがグラフ
のブロックを形成する。それらの技術のうちの1つは問
合せブロックの併合であり、H. Pirahesh, J. Hellerst
ein, and W. Hasan, "Extensible/rule basedquery rew
rite optimization in starburst", in SIGMOD 1992, p
p. 39-48、に記載されている。この技術は、問合せブロ
ックがしばしば併合することができないという事実によ
って制限される。もう1つの技術は、問合せグラフを、
評価中に前に計算される問合せブロックへと述語プッシ
ュダウンすることである。この技術は、階層的問合せ、
すなわち、非再帰的で共通の部分式を有しない問合せで
のみ有効である。これは、J. Ullman, Principles of D
atabase and Knowledgebase Systems, vol. 1 and 2, C
omputer Science Press, 1989、に記載されている。第
3の技術は、上記のUllmanの教科書に記載されたマジッ
ク集合変換に基づくものである。この第3の技術は、述
語が、別の関係が結合順序で後に現れるときに、ある関
係から当該別の関係へ移動することを可能にするもので
あり、I. Mumick, S. Finkelstein, H. Pirahesh, and
R. Ramakrishnan, "Magic Conditions", in PODS 199
0、に詳細に説明されている。
【0008】
【発明が解決しようとする課題】必要であって、本発明
により提供されることは、一般的に、問合せ木において
述語の適用が最も効率的なノードに述語を移動し、その
ノードでその述語を適用することが可能な最適化技術で
ある。
により提供されることは、一般的に、問合せ木において
述語の適用が最も効率的なノードに述語を移動し、その
ノードでその述語を適用することが可能な最適化技術で
ある。
【0009】
【課題を解決するための手段】本発明の最適化技術は、
述語プッシュダウン法の一般化であり、述語移動法と呼
ばれる。これは、まず述語を問合せグラフの他のノード
に移動してから、伝搬した述語の数を縮小するものであ
る。その結果、各述語は、問合せの計算における有利な
点で適用される。好ましい実施例では、述語を問合せグ
ラフの上方へ伝搬させてから、問合せグラフの下方へ伝
搬させることによって述語を移動し、簡約により冗長な
述語を除去する。簡約の最後に、残りの述語が計算にお
いてできるだけ早く適用される。
述語プッシュダウン法の一般化であり、述語移動法と呼
ばれる。これは、まず述語を問合せグラフの他のノード
に移動してから、伝搬した述語の数を縮小するものであ
る。その結果、各述語は、問合せの計算における有利な
点で適用される。好ましい実施例では、述語を問合せグ
ラフの上方へ伝搬させてから、問合せグラフの下方へ伝
搬させることによって述語を移動し、簡約により冗長な
述語を除去する。簡約の最後に、残りの述語が計算にお
いてできるだけ早く適用される。
【0010】述語移動法は、いくつかのブロックが集約
を有していても、および、重複がいくつかのブロックで
は保持され他のブロックでは消去されていても、適用可
能である。本発明の述語移動法のアルゴリズムは以下の
意味で拡張可能である。 (1)さまざまな述語を移動することができる。例え
ば、比較および不等述語、EXISTSおよびNOT EXISTS述
語、否定基底関係(EXCEPT節)、算術述語(例えばX=Y+
Z)、LIKE述語、関数従属性などが移動可能である。 (2)述語は外結合のような新たな演算子を通じて移動
することができる。述語移動法によって、多数の述語を
基底関係および中間関係に適用し、できるだけ早くそれ
を行うことになる。従って、評価は非常に効率的にな
る。マジック集合変換とは異なり、述語移動法は補助的
な関係(例えば、マジック関係および補助関係)を必要
とせず、結合の順序に依存しない。本発明の移動アルゴ
リズムは、相関を有するSQL問合せを含めて、非再帰
的SQL問合せに適用される。再帰的SQL問合せに一
般化することも可能である。
を有していても、および、重複がいくつかのブロックで
は保持され他のブロックでは消去されていても、適用可
能である。本発明の述語移動法のアルゴリズムは以下の
意味で拡張可能である。 (1)さまざまな述語を移動することができる。例え
ば、比較および不等述語、EXISTSおよびNOT EXISTS述
語、否定基底関係(EXCEPT節)、算術述語(例えばX=Y+
Z)、LIKE述語、関数従属性などが移動可能である。 (2)述語は外結合のような新たな演算子を通じて移動
することができる。述語移動法によって、多数の述語を
基底関係および中間関係に適用し、できるだけ早くそれ
を行うことになる。従って、評価は非常に効率的にな
る。マジック集合変換とは異なり、述語移動法は補助的
な関係(例えば、マジック関係および補助関係)を必要
とせず、結合の順序に依存しない。本発明の移動アルゴ
リズムは、相関を有するSQL問合せを含めて、非再帰
的SQL問合せに適用される。再帰的SQL問合せに一
般化することも可能である。
【0011】本発明の技術は、以下の新規な特徴を含
む。 ・問合せグラフにおいて上方、下方および側方に述語を
移動し、併合できない問合せブロック間も移動する。 ・集約を通して述語を移動する。その過程で、新たな述
語が集約から導出される。 ・関数従属性を使用して述語を導出し移動する。 ・EXISTSおよびNOT EXISTS述語を移動する。また、EXCE
PT節はそのときに移動可能なNOT EXISTS述語となる。 ・冗長な述語を除去する。冗長な述語は、全く最適でな
いアクセス経路および結合方法を生じる可能性がある不
正確な選択性評価につながり得るため、この特徴は重要
である。さらに、冗長な述語は計算量の浪費を表す。 本発明の技術は、もとの問合せおよびビューを書き換え
ることによって動作するため、従来の問合せオプティマ
イザと容易に組み合わせることができる。
む。 ・問合せグラフにおいて上方、下方および側方に述語を
移動し、併合できない問合せブロック間も移動する。 ・集約を通して述語を移動する。その過程で、新たな述
語が集約から導出される。 ・関数従属性を使用して述語を導出し移動する。 ・EXISTSおよびNOT EXISTS述語を移動する。また、EXCE
PT節はそのときに移動可能なNOT EXISTS述語となる。 ・冗長な述語を除去する。冗長な述語は、全く最適でな
いアクセス経路および結合方法を生じる可能性がある不
正確な選択性評価につながり得るため、この特徴は重要
である。さらに、冗長な述語は計算量の浪費を表す。 本発明の技術は、もとの問合せおよびビューを書き換え
ることによって動作するため、従来の問合せオプティマ
イザと容易に組み合わせることができる。
【0012】
【実施例】実施例の説明の構成は以下の通りである。ま
ず、詳細な例を通じて、述語移動法によって達成される
節約について説明する。次に、SQL構文および本発明
のアルゴリズムが作用する問合せ木表現について説明す
る。問合せ木は、問合せの直接的な解析木表現であり、
いくつかのシステム(例えば、H. Pirahesh, J. Heller
stein, and W. Hasan, "Extensible/rule based query
rewrite optimization in starburst", in SIGMOD 199
2, pp. 39-48)で使用されているものに近い。次に、述
語移動アルゴリズムについて詳細に説明する。まず一般
的にアルゴリズムを説明し、次に、例について、アルゴ
リズムの各ステップの説明をする。
ず、詳細な例を通じて、述語移動法によって達成される
節約について説明する。次に、SQL構文および本発明
のアルゴリズムが作用する問合せ木表現について説明す
る。問合せ木は、問合せの直接的な解析木表現であり、
いくつかのシステム(例えば、H. Pirahesh, J. Heller
stein, and W. Hasan, "Extensible/rule based query
rewrite optimization in starburst", in SIGMOD 199
2, pp. 39-48)で使用されているものに近い。次に、述
語移動アルゴリズムについて詳細に説明する。まず一般
的にアルゴリズムを説明し、次に、例について、アルゴ
リズムの各ステップの説明をする。
【0013】[1.例]述語移動最適化の利点を説明す
る詳細な例について考察する。特に、この例は、集約を
通じて、および、関数従属性に関する知識を使用して、
以下に述語が問合せブロック間を移動することができる
かについて説明する。
る詳細な例について考察する。特に、この例は、集約を
通じて、および、関数従属性に関する知識を使用して、
以下に述語が問合せブロック間を移動することができる
かについて説明する。
【0014】この例は、実世界の判断支援問合せに見ら
れる複雑さを代表するものである。さらに、この例は、
複雑な問合せを処理する場合に、本発明のアルゴリズム
の高い能力を示すものである。この例は、図7に示した
電話データベースからの基底関係を使用する。calls関
係703は、なされたあらゆる通話に対するタプル
(行)を有する。電話番号はエリアコード(AC)および
ローカル電話番号(Tel)によって表される。国際番号
はエリアコード「011」が与えられる。callsタプル
は、発呼者電話番号(FromAC, FromTel)、被呼者電話
番号(ToAC, ToTel)、および発呼に使用されたアクセ
スコード(AccessCode:アクセスコードが使用されなか
った場合は0)を含む。通話開始時刻(StartTime:精
度は1分)、および、通話時間(Length:これも精度は
1分)が含まれる。この時間精度と、同じ電話番号を有
する複数のラインのために、この関係には重複が許容さ
れる。特に、同じ1分以内にそれぞれ開始される1分の
通話がいくつか存在することがあり、与えられた2つの
番号の間で同時に複数の通話が進行することがあり得
る。
れる複雑さを代表するものである。さらに、この例は、
複雑な問合せを処理する場合に、本発明のアルゴリズム
の高い能力を示すものである。この例は、図7に示した
電話データベースからの基底関係を使用する。calls関
係703は、なされたあらゆる通話に対するタプル
(行)を有する。電話番号はエリアコード(AC)および
ローカル電話番号(Tel)によって表される。国際番号
はエリアコード「011」が与えられる。callsタプル
は、発呼者電話番号(FromAC, FromTel)、被呼者電話
番号(ToAC, ToTel)、および発呼に使用されたアクセ
スコード(AccessCode:アクセスコードが使用されなか
った場合は0)を含む。通話開始時刻(StartTime:精
度は1分)、および、通話時間(Length:これも精度は
1分)が含まれる。この時間精度と、同じ電話番号を有
する複数のラインのために、この関係には重複が許容さ
れる。特に、同じ1分以内にそれぞれ開始される1分の
通話がいくつか存在することがあり、与えられた2つの
番号の間で同時に複数の通話が進行することがあり得
る。
【0015】customers関係705は、各電話番号の所
有者に関する情報を与える。所有者に関するこの情報
は、所有者名(OwnerName)、アカウント型(Type:政
府(Govt)、企業、または個人)、および会員レベル(Me
mLevel:基本(Basic)、シルバー(Silver)、またはゴー
ルド(Gold))からなる。customers関係のキー(すなわ
ち、行にアクセスするために使用する属性値)は{AC,Te
l}であり、従って、以下の関数従属性が成り立つ。 {AC, Tel} → {OwnerName, Type, MemLevel} すなわち、ACおよびTelが与えられると、システムは他
の属性の値を検索することができる。
有者に関する情報を与える。所有者に関するこの情報
は、所有者名(OwnerName)、アカウント型(Type:政
府(Govt)、企業、または個人)、および会員レベル(Me
mLevel:基本(Basic)、シルバー(Silver)、またはゴー
ルド(Gold))からなる。customers関係のキー(すなわ
ち、行にアクセスするために使用する属性値)は{AC,Te
l}であり、従って、以下の関数従属性が成り立つ。 {AC, Tel} → {OwnerName, Type, MemLevel} すなわち、ACおよびTelが与えられると、システムは他
の属性の値を検索することができる。
【0016】電話番号は、users関係707にリストさ
れた1人以上のユーザ(UserName)を有することが可能
である。電話番号の各ユーザはアクセスコードを有する
ことができる。1人のユーザが複数のアクセスコードを
有することが可能であり、1つのアクセスコードが複数
の人に与えられることも可能である。users関係には重
複はない。
れた1人以上のユーザ(UserName)を有することが可能
である。電話番号の各ユーザはアクセスコードを有する
ことができる。1人のユーザが複数のアクセスコードを
有することが可能であり、1つのアクセスコードが複数
の人に与えられることも可能である。users関係には重
複はない。
【0017】いくつかの電話番号は、secret関係709
によって与えられるように、秘密であると宣言されてい
る。
によって与えられるように、秘密であると宣言されてい
る。
【0018】promotion関係711は、計画された宣伝
広告ごとに、スポンサー組織名(SponsorName)、広告
するエリアコード(AC)、および広告の開始日(Starti
ngDate)ならびに終了日(EndingDate)を有する。注意
すべきであるが、同じエリアコードおよび同じスポンサ
ーで異なる日付のいくつかのタプルが存在しうる。
広告ごとに、スポンサー組織名(SponsorName)、広告
するエリアコード(AC)、および広告の開始日(Starti
ngDate)ならびに終了日(EndingDate)を有する。注意
すべきであるが、同じエリアコードおよび同じスポンサ
ーで異なる日付のいくつかのタプルが存在しうる。
【0019】例1。以下で、述語を移動することによっ
て問合せQ1を最適化する。図1に問合せQ1(10
7)およびそれを定義する関係を示す。基底関係701
は図7のものである。次にこれらの関係を使用して2つ
のビューを定義している。ビューfgAccounts103(E
1で表す)は、秘密アカウントでない「政府(Govt)」型
のすべての国際アカウント(すなわち、エリアコード=
「011」)をリストする。ビュー103は、電話番号
およびその番号のユーザ名を含む。
て問合せQ1を最適化する。図1に問合せQ1(10
7)およびそれを定義する関係を示す。基底関係701
は図7のものである。次にこれらの関係を使用して2つ
のビューを定義している。ビューfgAccounts103(E
1で表す)は、秘密アカウントでない「政府(Govt)」型
のすべての国際アカウント(すなわち、エリアコード=
「011」)をリストする。ビュー103は、電話番号
およびその番号のユーザ名を含む。
【0020】第2のビュー(F1で表す)ptCustomers
105(すなわち、潜在的顧客(potential customer
s))は、まず2分より長い通話を選択した後、シルバー
レベルの会員の各顧客に対して、その顧客のエリアコー
ド以外の各エリアコードへのすべてのその顧客の通話の
うち最長のものを見つける。
105(すなわち、潜在的顧客(potential customer
s))は、まず2分より長い通話を選択した後、シルバー
レベルの会員の各顧客に対して、その顧客のエリアコー
ド以外の各エリアコードへのすべてのその顧客の通話の
うち最長のものを見つける。
【0021】次に、問合せQ1(107)を、fgAccoun
ts103およびptCustomers105によって定義する。
問合せ107は、広告が計画されているエリアコードに
50分より長い通話をした外国政府のうちから潜在的な
顧客を捜しているマーケティング機関によってなされて
いる。この問合せは、関連する各外国政府の電話番号、
その番号のすべてのユーザの名前、および、関連する広
告のスポンサーの名前をリストする。注意すべき点であ
るが、スポンサーは1つ以上のエリアコードで1つ以上
の広告を有することがあるため、重複は保持する。
ts103およびptCustomers105によって定義する。
問合せ107は、広告が計画されているエリアコードに
50分より長い通話をした外国政府のうちから潜在的な
顧客を捜しているマーケティング機関によってなされて
いる。この問合せは、関連する各外国政府の電話番号、
その番号のすべてのユーザの名前、および、関連する広
告のスポンサーの名前をリストする。注意すべき点であ
るが、スポンサーは1つ以上のエリアコードで1つ以上
の広告を有することがあるため、重複は保持する。
【0022】ビューE1(103)およびビューF1
(105)はいずれも問合せブロックQ1(107)に
併合することができないため、通常の問合せオプティマ
イザは問合せQ1(107)をうまく処理することがで
きない。その1つの理由は、ビューptCustomers105
が集約を行うためである。すなわち、このビューは、関
係の複数のタプルに関連する計算による1つ以上の結果
を与えるためである。ptCustomersでは、この集約演算
はGROUPBYによって指定される。これらのビューを併合
することができないもう1つの理由は、ビューfgAccoun
ts103が重複を生成および消去するためである(これ
に対してQ1(107)は重複を保持する)。
(105)はいずれも問合せブロックQ1(107)に
併合することができないため、通常の問合せオプティマ
イザは問合せQ1(107)をうまく処理することがで
きない。その1つの理由は、ビューptCustomers105
が集約を行うためである。すなわち、このビューは、関
係の複数のタプルに関連する計算による1つ以上の結果
を与えるためである。ptCustomersでは、この集約演算
はGROUPBYによって指定される。これらのビューを併合
することができないもう1つの理由は、ビューfgAccoun
ts103が重複を生成および消去するためである(これ
に対してQ1(107)は重複を保持する)。
【0023】併合が不可能であるため、通常のオプティ
マイザは各ビューを個別に最適化して評価するよう強制
され、その後、問合せを最適化し評価する。特に、この
ようなオプティマイザは、Q1(107)の述語MaxLen
>50をビューptCustomers105の定義内にプッシュする
ことができない(その理由は、この述語はptCustomers
で集約されたフィールドにかかるためである)。従っ
て、ビューptCustomers105を評価するときには、述
語Length>2を使用することしかできない。その後で、問
合せQ1(107)を評価するときに、述語MaxLen>50
を使用して、この選択を満たさないptCustomersタプル
を捨てることができるだけである。
マイザは各ビューを個別に最適化して評価するよう強制
され、その後、問合せを最適化し評価する。特に、この
ようなオプティマイザは、Q1(107)の述語MaxLen
>50をビューptCustomers105の定義内にプッシュする
ことができない(その理由は、この述語はptCustomers
で集約されたフィールドにかかるためである)。従っ
て、ビューptCustomers105を評価するときには、述
語Length>2を使用することしかできない。その後で、問
合せQ1(107)を評価するときに、述語MaxLen>50
を使用して、この選択を満たさないptCustomersタプル
を捨てることができるだけである。
【0024】これに対して、本発明の最適化アルゴリズ
ムは、以下のことができるため、ずっと良好に動作す
る。
ムは、以下のことができるため、ずっと良好に動作す
る。
【0025】・ビューfgAccounts103の述語c.AC="01
1"をとり、これをビューptCustomers105内に移動す
る。その結果、結合述語c.AC=t.FromACはt.FromAC="01
1"で置換され、t.ToAC<>t.FromACはt.FromAC<>"011"で
置換される。
1"をとり、これをビューptCustomers105内に移動す
る。その結果、結合述語c.AC=t.FromACはt.FromAC="01
1"で置換され、t.ToAC<>t.FromACはt.FromAC<>"011"で
置換される。
【0026】・ビューfgAccounts103から述語c.Type
="Govt"をとり、これをビューptCustomers105内に移
動し、そこでこれをcustomers関係705に適用する。
注意すべき点であるが、この移動の健全性を判定するた
めには、関数従属性(後述)に関する知識によって推論
することが必要である。特に、問合せQ1(107)に
おいて、ビューfgAccounts103およびptCustomers1
05はcustomers関係のキーで結合され、従って、述語
c.Type="Govt"はfgAccountsからptCustomersの定義内に
移動することができる。
="Govt"をとり、これをビューptCustomers105内に移
動し、そこでこれをcustomers関係705に適用する。
注意すべき点であるが、この移動の健全性を判定するた
めには、関数従属性(後述)に関する知識によって推論
することが必要である。特に、問合せQ1(107)に
おいて、ビューfgAccounts103およびptCustomers1
05はcustomers関係のキーで結合され、従って、述語
c.Type="Govt"はfgAccountsからptCustomersの定義内に
移動することができる。
【0027】・ビューfgAccountsから述語 NOT EXISTS (SELECT * FROM secret s WHERE s.AC=c.FromAC AND s.Tel=c.FromTel) をとり、これをビューptCustomers内に移動する。これ
によって、customers関係は、callsとの結合をとる前
に、かつ、グルーピング演算の前に制限することができ
るため、ビューptCustomersの評価がさらに効率的にな
る。
によって、customers関係は、callsとの結合をとる前
に、かつ、グルーピング演算の前に制限することができ
るため、ビューptCustomersの評価がさらに効率的にな
る。
【0028】・ビューptCustomersから述語c.MemLevel
="Silver"をとり、これをビューfgAccounts内に移動す
る。ここでも、この移動のために関数従属性が使用され
ている。
="Silver"をとり、これをビューfgAccounts内に移動す
る。ここでも、この移動のために関数従属性が使用され
ている。
【0029】・問合せから述語MaxLen>50をとり、t.Len
gth>50をptCustomersのWHERE節内に導入することができ
ることを推論する。その結果、述語t.Length>2をptCust
omersの定義から消去し、述語t.Length>50を問合せから
削除することができる。注意すべき点であるが、この最
適化によって、集約を通じて選択をプッシュすることに
なり、これは本発明のアルゴリズムの新規な特徴であ
る。
gth>50をptCustomersのWHERE節内に導入することができ
ることを推論する。その結果、述語t.Length>2をptCust
omersの定義から消去し、述語t.Length>50を問合せから
削除することができる。注意すべき点であるが、この最
適化によって、集約を通じて選択をプッシュすることに
なり、これは本発明のアルゴリズムの新規な特徴であ
る。
【0030】最適化されたビューおよび問合せを図2の
E1o203、F1o205およびQ1o207に示す。
この例に対する移動アルゴリズムの動作については後で
詳細に説明する。
E1o203、F1o205およびQ1o207に示す。
この例に対する移動アルゴリズムの動作については後で
詳細に説明する。
【0031】[2.準備:SQL記法および問合せ木表
現]述語移動アルゴリズムはSQL問合せの問合せ木表
現に作用する。問合せ木は本質的には問合せの解析木で
ある。図1の例に対する問合せ木を図5に示し、詳細は
以下で説明する。ここでは、SQL構文について簡単に
説明し、問合せ木を構築する方法について説明する。
現]述語移動アルゴリズムはSQL問合せの問合せ木表
現に作用する。問合せ木は本質的には問合せの解析木で
ある。図1の例に対する問合せ木を図5に示し、詳細は
以下で説明する。ここでは、SQL構文について簡単に
説明し、問合せ木を構築する方法について説明する。
【0032】[3.SQL構文]SQL問合せは、ビュ
ー定義の列であって、その定義のうちの1つが問合せビ
ューとして指定されるものとみなすことができる。ビュ
ー定義は次の形の単一のSELECT文とすることができる。 (V): CREATE VIEW ... AS SELECT ... FROM ... WHERE ... GROUPBY ... HAVING ... ただし、GROUPBY節およびHAVING節はオプションであ
る。あるいは、ビューは、複数のSELECT文のUNION、INT
ERSECTION、およびEXCEPTとして定義することが可能で
ある。
ー定義の列であって、その定義のうちの1つが問合せビ
ューとして指定されるものとみなすことができる。ビュ
ー定義は次の形の単一のSELECT文とすることができる。 (V): CREATE VIEW ... AS SELECT ... FROM ... WHERE ... GROUPBY ... HAVING ... ただし、GROUPBY節およびHAVING節はオプションであ
る。あるいは、ビューは、複数のSELECT文のUNION、INT
ERSECTION、およびEXCEPTとして定義することが可能で
ある。
【0033】[3.1 問合せ木]問合せ木の各ノード
はSQL問合せの評価のステップに対応する。ステップ
とは、SELECTブロック(すなわち、SELECT-FROM-WHERE
節)、または、GROUPBYブロック(すなわち、GROUPBY節
およびHAVING節で結合されたSELECTブロック)のいずれ
かの計算である。木の根(ルート)は問合せビューであ
る。ノードnの子はnの計算で参照されるビュー(すな
わち、非基底関係)である。例えば、SELECTブロックに
対するノードは、そのブロックのFROM節で参照されるす
べてのビューに対する子を有する。
はSQL問合せの評価のステップに対応する。ステップ
とは、SELECTブロック(すなわち、SELECT-FROM-WHERE
節)、または、GROUPBYブロック(すなわち、GROUPBY節
およびHAVING節で結合されたSELECTブロック)のいずれ
かの計算である。木の根(ルート)は問合せビューであ
る。ノードnの子はnの計算で参照されるビュー(すな
わち、非基底関係)である。例えば、SELECTブロックに
対するノードは、そのブロックのFROM節で参照されるす
べてのビューに対する子を有する。
【0034】ローカル属性およびエクスポート属性。各
計算ステップはいくつかのオペランドと1つの結果を有
する。ノードのローカル属性とは、そのオペランドに現
れる属性である。例101では、ローカル属性には参照
番号109が付与されている。エクスポート属性とは、
結果に現れる属性である。例101では、この属性には
参照番号111が付与されている。注意すべき点である
が、ノードnのエクスポート属性はnの親のローカル属
性のうちにある。また、木501のルート503(すな
わち、問合せビューに対するノード)はエクスポート属
性を有しないことにも注意すべきである。
計算ステップはいくつかのオペランドと1つの結果を有
する。ノードのローカル属性とは、そのオペランドに現
れる属性である。例101では、ローカル属性には参照
番号109が付与されている。エクスポート属性とは、
結果に現れる属性である。例101では、この属性には
参照番号111が付与されている。注意すべき点である
が、ノードnのエクスポート属性はnの親のローカル属
性のうちにある。また、木501のルート503(すな
わち、問合せビューに対するノード)はエクスポート属
性を有しないことにも注意すべきである。
【0035】ラベル。木501では、各ノードnに対応
して、nのローカル属性およびエクスポート属性に適用
可能なすべての述語513を最終的に含むラベル511
がある。関数従属性のため、ラベルは関数項を含むこと
もある。図5のラベル511におけるこのような関数項
の例は、c.Type=f_1(c.AC, c.Tel)である。ただし、c.T
ypeの値は関数項f_1(c.AC, c.Tel)によって返される。
して、nのローカル属性およびエクスポート属性に適用
可能なすべての述語513を最終的に含むラベル511
がある。関数従属性のため、ラベルは関数項を含むこと
もある。図5のラベル511におけるこのような関数項
の例は、c.Type=f_1(c.AC, c.Tel)である。ただし、c.T
ypeの値は関数項f_1(c.AC, c.Tel)によって返される。
【0036】[4.問合せ木におけるノードの種類]好
ましい実施例の問合せ木501は4種類までのノードか
らなることが可能である。それらは、SELECTノード、GR
OUPBYノード、UNIONノード、およびINTERSECTIONノード
である。
ましい実施例の問合せ木501は4種類までのノードか
らなることが可能である。それらは、SELECTノード、GR
OUPBYノード、UNIONノード、およびINTERSECTIONノード
である。
【0037】SELECTノード。 ビュー定義が次の形の単一のSELECTブロック(すなわ
ち、SELECT-FROM-WHERE節)からなるとき、SELECTノー
ドnを作成する。 CREATE VIEW V(A1,...,Al) AS SELECT R1.B1,...,Rl.Bl FROM Rel1 r1,...,Relm rm WHERE ... 問合せ木501では、3個のSELECTノード、すなわち、
507、517、および503がある。SELECTノードn
のローカル属性はすべてその計算で使用する属性、すな
わち、ri.Bの形の項である。ただし、1≦i≦mであ
り、BはReliの属性である。例えば、SELECTノード50
7では、ローカル属性はc.AC、c.Tel、c.Type、u.AC、
およびu.Telである。エクスポート属性はV.A1,...,V.
Al、すなわち、ノード507の場合には、AC、Tel、Use
rNameである。注意すべき点であるが、エクスポート属
性は、SELECT節にリストされたローカル属性の単なる別
名である。Reliもまたビューである場合、nはReliの定
義に対する子ノードを有する。SELECT DISTINCTブロッ
クは、SELECTブロックと全く同じように扱われる。(SE
LECTとSELECT DISTINCTの違いは、SELECT DISTINCTでは
重複は選択されないことである。)
ち、SELECT-FROM-WHERE節)からなるとき、SELECTノー
ドnを作成する。 CREATE VIEW V(A1,...,Al) AS SELECT R1.B1,...,Rl.Bl FROM Rel1 r1,...,Relm rm WHERE ... 問合せ木501では、3個のSELECTノード、すなわち、
507、517、および503がある。SELECTノードn
のローカル属性はすべてその計算で使用する属性、すな
わち、ri.Bの形の項である。ただし、1≦i≦mであ
り、BはReliの属性である。例えば、SELECTノード50
7では、ローカル属性はc.AC、c.Tel、c.Type、u.AC、
およびu.Telである。エクスポート属性はV.A1,...,V.
Al、すなわち、ノード507の場合には、AC、Tel、Use
rNameである。注意すべき点であるが、エクスポート属
性は、SELECT節にリストされたローカル属性の単なる別
名である。Reliもまたビューである場合、nはReliの定
義に対する子ノードを有する。SELECT DISTINCTブロッ
クは、SELECTブロックと全く同じように扱われる。(SE
LECTとSELECT DISTINCTの違いは、SELECT DISTINCTでは
重複は選択されないことである。)
【0038】GROUPBY三つ組とノード。 GROUPBYブロックからなるビュー定義は、ここの説明で
は、3個のノードに分かれているかのようにして扱うこ
とができる。GROUPBY三つ組301を図3に示す。いち
ばん下のノード(ボトムノード)n1(303)は、ビ
ュー定義のSELECT-FROM-WHERE部分に対するSELECTノー
ドである(これは、SELECTノードに対する前述のような
子を有することもある)。中間のノード(中間ノード)
n2(305)はGROUPBYノードであり、これはGROUPBY
節および付属する集約を表す。一番上のノードn3(3
07)はHAVINGノードであり、これはHAVING節内の述語
を表す。
は、3個のノードに分かれているかのようにして扱うこ
とができる。GROUPBY三つ組301を図3に示す。いち
ばん下のノード(ボトムノード)n1(303)は、ビ
ュー定義のSELECT-FROM-WHERE部分に対するSELECTノー
ドである(これは、SELECTノードに対する前述のような
子を有することもある)。中間のノード(中間ノード)
n2(305)はGROUPBYノードであり、これはGROUPBY
節および付属する集約を表す。一番上のノードn3(3
07)はHAVINGノードであり、これはHAVING節内の述語
を表す。
【0039】Lをn1(303)内のローカル属性(通
常のSELECTノードの場合のように定義する)の集合と
し、AをSELECT節からの集約項(例えばMax(r.D))の集
合とする。n1(303)およびn2(305)の両方で
は、Lがローカル属性の集合であるが、n3内ではL∪
Aがローカル属性の集合である。エクスポート属性の集
合はn1(303)内ではLであり、n2内ではそれはL
∪Aであり、n3内ではそれは{V.A1,...,V.Al}である。
こうして、図5では、ノード505はSELECTノード51
7およびGROUPBYノード515からなり、ノード517
のローカル属性およびエクスポート属性ならびにノード
n2のローカル属性はt.Length、t.ToAC、t.FromAC、tc.
Tel、c.MemLevel、c.Type、c.AC、s.Tel、およびs.ACで
ある。ノード515のエクスポート属性はc.AC、c.Te
l、c.OwnerName、t.ToAC、およびMAX(t.Length)であ
る。
常のSELECTノードの場合のように定義する)の集合と
し、AをSELECT節からの集約項(例えばMax(r.D))の集
合とする。n1(303)およびn2(305)の両方で
は、Lがローカル属性の集合であるが、n3内ではL∪
Aがローカル属性の集合である。エクスポート属性の集
合はn1(303)内ではLであり、n2内ではそれはL
∪Aであり、n3内ではそれは{V.A1,...,V.Al}である。
こうして、図5では、ノード505はSELECTノード51
7およびGROUPBYノード515からなり、ノード517
のローカル属性およびエクスポート属性ならびにノード
n2のローカル属性はt.Length、t.ToAC、t.FromAC、tc.
Tel、c.MemLevel、c.Type、c.AC、s.Tel、およびs.ACで
ある。ノード515のエクスポート属性はc.AC、c.Te
l、c.OwnerName、t.ToAC、およびMAX(t.Length)であ
る。
【0040】ビュー定義は、GROUPBY節およびHAVING節
を有しなくても、SELECT節内に集約を有することがあ
る。この場合には、空のGROUPBY節を有するとみなすべ
きである。また、注意すべき点であるが、ただ1つのGR
OUPBY節を有する(かつ、HAVING節を有しない)場合、
問合せ木501のようにいちばん上のノード(トップノ
ード)n3(307)を省略して、V.A1,...,V.Alをn2
(305)のエクスポート属性とすることができる。こ
の場合、Aの属性はn2においてローカルであるとみな
す。
を有しなくても、SELECT節内に集約を有することがあ
る。この場合には、空のGROUPBY節を有するとみなすべ
きである。また、注意すべき点であるが、ただ1つのGR
OUPBY節を有する(かつ、HAVING節を有しない)場合、
問合せ木501のようにいちばん上のノード(トップノ
ード)n3(307)を省略して、V.A1,...,V.Alをn2
(305)のエクスポート属性とすることができる。こ
の場合、Aの属性はn2においてローカルであるとみな
す。
【0041】UNIONノードおよびINTERSECTIONノード。 ビュー定義がUNION(あるいはINTERSECTION)を含む場
合、この演算に対して図4に示すようなノードn403
を作成する。ノードnは、このビュー定義内のあらゆる
SELECTブロックに対するSELECT子405(i)を有す
る。i番目のSELECT子405に対して、ローカル属性は
通常のように定義され、エクスポート属性はVi.A1,...,
Vi.Alである。ただし、Viは新たに作成した名前であ
る。(UNIONまたはINTERSECTION)ノードn403のロ
ーカル属性は、そのすべての子からのエクスポート属性
である。ノードn403のエクスポート属性はV.
A1,...,V.Alである。注意すべき点であるが、ビュー定
義のSELECTブロックのうちのいくつかはGROUPBYブロッ
クを含むことがあり、従って、nのいくつかの子が上記
のような三つ組301となることがある。
合、この演算に対して図4に示すようなノードn403
を作成する。ノードnは、このビュー定義内のあらゆる
SELECTブロックに対するSELECT子405(i)を有す
る。i番目のSELECT子405に対して、ローカル属性は
通常のように定義され、エクスポート属性はVi.A1,...,
Vi.Alである。ただし、Viは新たに作成した名前であ
る。(UNIONまたはINTERSECTION)ノードn403のロ
ーカル属性は、そのすべての子からのエクスポート属性
である。ノードn403のエクスポート属性はV.
A1,...,V.Alである。注意すべき点であるが、ビュー定
義のSELECTブロックのうちのいくつかはGROUPBYブロッ
クを含むことがあり、従って、nのいくつかの子が上記
のような三つ組301となることがある。
【0042】DAG問合せ。 あるビューVが2つの異なるビューから参照される(す
なわち、Vを表すノードが複数の親を有することがあ
る)場合、問合せグラフは有効非巡回グラフ(DAG)
である。この場合、DAGは、問合せ木内のV(および
その子)を複製することによって木に変換しなければな
らない。アルゴリズムの2つの段階を実行した後、Vの
2つの実現を共通の部分式へと結合することができる。
しかし、2つの実現が2つの別個のラベルとなる場合、
後述のように、それらを結合することは好ましくないこ
ともある。
なわち、Vを表すノードが複数の親を有することがあ
る)場合、問合せグラフは有効非巡回グラフ(DAG)
である。この場合、DAGは、問合せ木内のV(および
その子)を複製することによって木に変換しなければな
らない。アルゴリズムの2つの段階を実行した後、Vの
2つの実現を共通の部分式へと結合することができる。
しかし、2つの実現が2つの別個のラベルとなる場合、
後述のように、それらを結合することは好ましくないこ
ともある。
【0043】例2。図5に、図1の問合せQ1(10
7)に対する問合せ木501を示す。ビューptCustomer
s105は、二つ組に結合されたSELECTノード517お
よびGROUPBYノードによって左側に表されている。ビュ
ーfgAccounts103は単一のSELECTノード507によっ
て右側に表されている。問合せビューQ1(107)自
体は、いちばん上に単一のSELECTノード503によって
表されている。ptCustomersノード505およびfgAccou
ntsノード507のそれぞれから問合せノード503へ
の弧519および521は、この問合せを定義する際の
ビューの使用法から生じている。問合せ木501は、述
語移動法の初期化段階およびプルアップ段階の完了後に
ノードに追加されるラベルも示している。通常書体の述
語(例えば、図5の511の述語)は初期化中にラベル
に追加されたものである。ボールド書体の述語(例え
ば、509の述語)はプルアップ段階でラベルに追加さ
れたものである。
7)に対する問合せ木501を示す。ビューptCustomer
s105は、二つ組に結合されたSELECTノード517お
よびGROUPBYノードによって左側に表されている。ビュ
ーfgAccounts103は単一のSELECTノード507によっ
て右側に表されている。問合せビューQ1(107)自
体は、いちばん上に単一のSELECTノード503によって
表されている。ptCustomersノード505およびfgAccou
ntsノード507のそれぞれから問合せノード503へ
の弧519および521は、この問合せを定義する際の
ビューの使用法から生じている。問合せ木501は、述
語移動法の初期化段階およびプルアップ段階の完了後に
ノードに追加されるラベルも示している。通常書体の述
語(例えば、図5の511の述語)は初期化中にラベル
に追加されたものである。ボールド書体の述語(例え
ば、509の述語)はプルアップ段階でラベルに追加さ
れたものである。
【0044】[5.移動アルゴリズム]これから、述語
移動アルゴリズムの主なステップの概観を述べた後、各
ステップの詳細な説明をする。
移動アルゴリズムの主なステップの概観を述べた後、各
ステップの詳細な説明をする。
【0045】[5.1 アルゴリズムの主なステップ] 1.ラベル初期化。初期ラベルは、WHERE節およびHAVIN
G節内の述語から、ならびに、関数従属性から作成され
る。(初期ラベルはローカル属性のみを参照する。)
G節内の述語から、ならびに、関数従属性から作成され
る。(初期ラベルはローカル属性のみを参照する。)
【0046】2.述語プルアップ。木をボトムアップ式
にたどる。各ノードで、ローカル属性についての述語か
らエクスポート属性についての述語を推論し、その推論
した述語を親ノードにプッシュする。
にたどる。各ノードで、ローカル属性についての述語か
らエクスポート属性についての述語を推論し、その推論
した述語を親ノードにプッシュする。
【0047】3.述語プッシュダウン。木をトップダウ
ン式にたどる。各ノードで、エクスポート属性について
の述語からローカル属性についての述語を推論し、その
推論した述語をそのノードの子にプッシュする。
ン式にたどる。各ノードで、エクスポート属性について
の述語からローカル属性についての述語を推論し、その
推論した述語をそのノードの子にプッシュする。
【0048】4.ラベル最小化。述語は、ノードの子孫
で既に適用されている場合にはそのノードから除去する
ことができる。
で既に適用されている場合にはそのノードから除去する
ことができる。
【0049】5.(オプション。)問合せ木をSQLコ
ードに変換する(計画オプティマイザは、問合せの木表
現で直接動作することもある)。
ードに変換する(計画オプティマイザは、問合せの木表
現で直接動作することもある)。
【0050】上記のアルゴリズムの結果、述語は、問合
せ木の適用可能なあらゆるノードに伝搬され、木内の述
語が少なくなるように重複は除去されて、残りの述語は
問合せの計算のために問合せ木内の有利な位置に配置さ
れるようになる。好ましい実施例では、この有利な位置
は問合せ木内でできるだけ低い位置である。しかし、他
の実施例では、有利な位置を決定する他の方法を適用す
ることも可能である。
せ木の適用可能なあらゆるノードに伝搬され、木内の述
語が少なくなるように重複は除去されて、残りの述語は
問合せの計算のために問合せ木内の有利な位置に配置さ
れるようになる。好ましい実施例では、この有利な位置
は問合せ木内でできるだけ低い位置である。しかし、他
の実施例では、有利な位置を決定する他の方法を適用す
ることも可能である。
【0051】このアルゴリズムは、新たな型の述語(例
えばLIKE)に、および、新たな型のノード(例えば外結
合)に拡張可能であるという意味で拡張可能である。次
に、各ステップを詳細に説明する。
えばLIKE)に、および、新たな型のノード(例えば外結
合)に拡張可能であるという意味で拡張可能である。次
に、各ステップを詳細に説明する。
【0052】[5.2 ラベル初期化]SELECTノード 。SELECTノードの初期ラベルは、WHERE節
に現れる述語からなる。例えば、図5では、fgAccounts
ノード507内の最初の5個の述語523はWHERE節か
らきている。注意すべき点であるが、NOT secret(c.AC,
c.Tel)はNOT EXISTS部分問合せの単なる略記である。
に現れる述語からなる。例えば、図5では、fgAccounts
ノード507内の最初の5個の述語523はWHERE節か
らきている。注意すべき点であるが、NOT secret(c.AC,
c.Tel)はNOT EXISTS部分問合せの単なる略記である。
【0053】GROUPBY三つ組。GROUPBYブロックに対する
ノード三つ組301(図3参照)では、ボトムノード3
03およびトップノード307の初期ラベルはそれぞれ
WHERE節およびHAVING節からの述語である。中間ノード
n2(305)の初期ラベルは、属性をグルーピングす
ることが集約される値を関数的に決定することを規定す
る述語を含む。例えば、ビューptCustomers105で
は、述語 MaxLen=f_3(c.AC, c.Tel, c.OwnerName, t.ToAC) がGROUPBYノード515に現れる。
ノード三つ組301(図3参照)では、ボトムノード3
03およびトップノード307の初期ラベルはそれぞれ
WHERE節およびHAVING節からの述語である。中間ノード
n2(305)の初期ラベルは、属性をグルーピングす
ることが集約される値を関数的に決定することを規定す
る述語を含む。例えば、ビューptCustomers105で
は、述語 MaxLen=f_3(c.AC, c.Tel, c.OwnerName, t.ToAC) がGROUPBYノード515に現れる。
【0054】UNIONノードおよびINTERSECTIONノード。U
NIONノードあるいはINTERSECTIONノードn403の初期
ラベルは空である。
NIONノードあるいはINTERSECTIONノードn403の初期
ラベルは空である。
【0055】関数従属性。次の関数従属性が基底関係R
について成り立つとする。 fd : {A1,...,Ak} → {B1,...,Bp} WHERE節またはHAVING節がRを参照する場合、述語ffd,i
(r.A1,...,r.Ak)=Bi(1≦i≦p)がその節に対して作
成されるラベルに追加される。例えば、関数従属性 {AC, Tel} → {OwnerName, Type, MemLevel} がcustomers関係705で成り立つ。従って、述語 c.Type = f_1(c.AC, c.Tel) がSELECTノード507および517に追加される。これ
らのノードはいずれもcustomers関係705を参照する
ためである。
について成り立つとする。 fd : {A1,...,Ak} → {B1,...,Bp} WHERE節またはHAVING節がRを参照する場合、述語ffd,i
(r.A1,...,r.Ak)=Bi(1≦i≦p)がその節に対して作
成されるラベルに追加される。例えば、関数従属性 {AC, Tel} → {OwnerName, Type, MemLevel} がcustomers関係705で成り立つ。従って、述語 c.Type = f_1(c.AC, c.Tel) がSELECTノード507および517に追加される。これ
らのノードはいずれもcustomers関係705を参照する
ためである。
【0056】相等述語。ノードnにおいて、2つのエク
スポート属性V.AiおよびV.Ajが同じローカル属性の別名
である場合、等式V.Ai=V.Ajをnのラベルに追加する。
スポート属性V.AiおよびV.Ajが同じローカル属性の別名
である場合、等式V.Ai=V.Ajをnのラベルに追加する。
【0057】例3。問合せ木501に対する初期ラベル
は図ではタイプライタ書体で示されている。
は図ではタイプライタ書体で示されている。
【0058】[5.3 述語プルアップ]述語プルアッ
プ段階では、木を、葉から出発してボトムアップ式にた
どる。各ノードで、ローカル属性についての述語からエ
クスポート属性についての述語を推論する。推論した述
語を、与えられたノードおよびその親の両方のラベルに
追加する。追加の述語を推論する個々の方法は、考慮対
象のノードの型およびそのノードのラベル内の述語の型
に依存する。
プ段階では、木を、葉から出発してボトムアップ式にた
どる。各ノードで、ローカル属性についての述語からエ
クスポート属性についての述語を推論する。推論した述
語を、与えられたノードおよびその親の両方のラベルに
追加する。追加の述語を推論する個々の方法は、考慮対
象のノードの型およびそのノードのラベル内の述語の型
に依存する。
【0059】[5.3.1 SELECTノードを通じての述
語プルアップ]ラベルL(n)を有するSELECTノードn
を通じて述語プルアップするには、以下のようにする。
語プルアップ]ラベルL(n)を有するSELECTノードn
を通じて述語プルアップするには、以下のようにする。
【0060】・L(n)内に既にある述語によって含意
される新たな述語をL(n)に追加する。例えば、r1.A
<r2.Bおよびr2.B<r3.Cが両方ともL(n)内にある場
合、r1.A<r3.CをL(n)に追加する。理想的には、論
理的意味のもとでL(n)の閉包を計算することが好ま
しい。これによって、述語移動の効果が最大になるため
である。しかし、本発明の移動アルゴリズムは、完全閉
包を計算することができない場合であっても健全性が保
たれる。注意すべき点であるが、述語が、定数および通
常属性(すなわち、集約項なし)間の比較(すなわち、
<、≦、<>および=)の連言のみからなる場合、その
閉包は多項式時間で計算可能である(上記のUllmanの文
献を参照)。
される新たな述語をL(n)に追加する。例えば、r1.A
<r2.Bおよびr2.B<r3.Cが両方ともL(n)内にある場
合、r1.A<r3.CをL(n)に追加する。理想的には、論
理的意味のもとでL(n)の閉包を計算することが好ま
しい。これによって、述語移動の効果が最大になるため
である。しかし、本発明の移動アルゴリズムは、完全閉
包を計算することができない場合であっても健全性が保
たれる。注意すべき点であるが、述語が、定数および通
常属性(すなわち、集約項なし)間の比較(すなわち、
<、≦、<>および=)の連言のみからなる場合、その
閉包は多項式時間で計算可能である(上記のUllmanの文
献を参照)。
【0061】・エクスポート属性を有する述語を以下の
ように推論する。αがL(n)内にある場合、τ(α)
をL(n)に追加する。ただし、τはエクスポート属性
をローカル属性に代入する。例えば、fgAccountsノード
507において、エクスポート属性についての述語fgAc
counts.AC="011"が、ローカル属性についての述語c.AC
="011"から推論される。
ように推論する。αがL(n)内にある場合、τ(α)
をL(n)に追加する。ただし、τはエクスポート属性
をローカル属性に代入する。例えば、fgAccountsノード
507において、エクスポート属性についての述語fgAc
counts.AC="011"が、ローカル属性についての述語c.AC
="011"から推論される。
【0062】・L(n)内の述語がエクスポート属性ま
たは定数のみを参照している場合、その述語をnの親の
ラベルに追加する。例えば図5では、述語fg.AC="011"
がルートのラベルに追加される。
たは定数のみを参照している場合、その述語をnの親の
ラベルに追加する。例えば図5では、述語fg.AC="011"
がルートのラベルに追加される。
【0063】例4。図5で、プルアップ段階によって生
成されたラベルはボールド書体(例えば509)で示さ
れている。明確にするため、GROUPBYノードのラベルに
はその子からプルアップされた述語は示していない。ま
た、ラベルの閉包におけるすべての述語を示しているわ
けではない。
成されたラベルはボールド書体(例えば509)で示さ
れている。明確にするため、GROUPBYノードのラベルに
はその子からプルアップされた述語は示していない。ま
た、ラベルの閉包におけるすべての述語を示しているわ
けではない。
【0064】[5.3.2 GROUPBYノードを通じての
述語プルアップ]原理的には、GROUPBY三つ組の各ノー
ドで前節の3つのステップを(ボトムノードから出発し
て)実行すれば十分である。注意すべき点であるが、第
2のステップは、ボトムノードおよび中間ノードでは冗
長である。これらの2つのノード内のすべてのローカル
属性はエクスポート属性でもあるからである。しかし、
実際には、集約項に関連する述語を推論するためにいく
つかの規則が必要である。以下に示すのは、そのような
規則の(健全ではあるが完全ではない)集合である。こ
れらの規則は中間ノードのラベルL(n2)に適用しな
ければならない(これらのすべての規則において、≦は
<で置き換えることが可能である)。
述語プルアップ]原理的には、GROUPBY三つ組の各ノー
ドで前節の3つのステップを(ボトムノードから出発し
て)実行すれば十分である。注意すべき点であるが、第
2のステップは、ボトムノードおよび中間ノードでは冗
長である。これらの2つのノード内のすべてのローカル
属性はエクスポート属性でもあるからである。しかし、
実際には、集約項に関連する述語を推論するためにいく
つかの規則が必要である。以下に示すのは、そのような
規則の(健全ではあるが完全ではない)集合である。こ
れらの規則は中間ノードのラベルL(n2)に適用しな
ければならない(これらのすべての規則において、≦は
<で置き換えることが可能である)。
【0065】1.Min(B)がn2の属性である場合(すな
わち、Min(B)がSELECT節に現れている場合)、Min(B)≦
BをL(n2)に追加する(換言すれば、Bの最小値が列B
内のあらゆる値以下である)。さらに、(B≧c)∈L(n
2)である場合(ただしcは定数)、Min(B)≧cをL
(n2)に追加する(換言すれば、cが列B内のあらゆる
値以下である場合、cはBの最小値以下でもある)。
わち、Min(B)がSELECT節に現れている場合)、Min(B)≦
BをL(n2)に追加する(換言すれば、Bの最小値が列B
内のあらゆる値以下である)。さらに、(B≧c)∈L(n
2)である場合(ただしcは定数)、Min(B)≧cをL
(n2)に追加する(換言すれば、cが列B内のあらゆる
値以下である場合、cはBの最小値以下でもある)。
【0066】2.Max(B)がn2の属性である場合、Max
(B)≧BをL(n2)に追加する。さらに、(B≦c)∈L
(n2)である場合(ただしcは定数)、Max(B)≦cをL
(n2)に追加する。例えば、図5のGROUPBYノード51
5を考える。まず、Max(t.Length)≧t.Lengthを推論す
る。t.Length>2がノード517からプルアップされるた
め、Max(t.Length)>2を(推移律により)推論する。次
に、MaxLenはMax(t.Length)の別名のエクスポート属性
であるため、MaxLen>2が推論される。明確にするため、
MaxLen>2のみを図示してある。
(B)≧BをL(n2)に追加する。さらに、(B≦c)∈L
(n2)である場合(ただしcは定数)、Max(B)≦cをL
(n2)に追加する。例えば、図5のGROUPBYノード51
5を考える。まず、Max(t.Length)≧t.Lengthを推論す
る。t.Length>2がノード517からプルアップされるた
め、Max(t.Length)>2を(推移律により)推論する。次
に、MaxLenはMax(t.Length)の別名のエクスポート属性
であるため、MaxLen>2が推論される。明確にするため、
MaxLen>2のみを図示してある。
【0067】3.以下の3つの述語、すなわち、Max(B)
≧Min(B)、Avg(B)≧Min(B)およびMax(B)≧Avg(B)を考え
る。これらの述語のそれぞれについて、その集約項がn
2の属性である場合には、その述語をL(n2)に追加す
る。
≧Min(B)、Avg(B)≧Min(B)およびMax(B)≧Avg(B)を考え
る。これらの述語のそれぞれについて、その集約項がn
2の属性である場合には、その述語をL(n2)に追加す
る。
【0068】4.Avg(B)がn2の属性であって(B≦c)∈
L(n2)である場合(ただしcは定数)、Avg(B)≦cを
L(n2)に追加する。(B≧c)∈L(n2)である場合、
Avg(B)≧cをL(n2)に追加する。
L(n2)である場合(ただしcは定数)、Avg(B)≦cを
L(n2)に追加する。(B≧c)∈L(n2)である場合、
Avg(B)≧cをL(n2)に追加する。
【0069】[5.3.3 UNIONノードおよびINTERSE
CTIONノードを通じての述語プルアップ]図4に示した
ようなUNION(あるいはINTERSECTION)ノードを考え
る。想起すべき点であるが、ノードnのエクスポート属
性はV.A1,...,V.Alであり、一方、i番目のSELECT子の
エクスポート属性はVi.A1,...,Vi.Alである。ただし、V
iは新たに作成した名前である。
CTIONノードを通じての述語プルアップ]図4に示した
ようなUNION(あるいはINTERSECTION)ノードを考え
る。想起すべき点であるが、ノードnのエクスポート属
性はV.A1,...,V.Alであり、一方、i番目のSELECT子の
エクスポート属性はVi.A1,...,Vi.Alである。ただし、V
iは新たに作成した名前である。
【0070】D iを、ノードnのi番目のSELECT子からノ
ードnにプルアップされた述語の連言であるとし、D
iを、D iからVi.AjにV.Aj(1≦j≦l)を代入すること
によって得られるものとする。nがUNIONノードである
場合、nおよびその親のラベルにD1∨...∨Dmを追加す
る。nがINTERSECTIONノードである場合、nおよびその
親のラベルにD1∧...∧Dmを追加する。
ードnにプルアップされた述語の連言であるとし、D
iを、D iからVi.AjにV.Aj(1≦j≦l)を代入すること
によって得られるものとする。nがUNIONノードである
場合、nおよびその親のラベルにD1∨...∨Dmを追加す
る。nがINTERSECTIONノードである場合、nおよびその
親のラベルにD1∧...∧Dmを追加する。
【0071】[5.4 述語プッシュダウン]アルゴリ
ズムのこの段階は、述語プッシュダウン法の一般化であ
る。プルアップとプッシュダウンの組合せによって、述
語を、木のある部分から別の部分へ移動することが可能
となる。この段階では、問合せ木をルートから出発して
トップダウン式にたどる。各ノードで、エクスポート属
性についての述語からローカル属性についての述語を推
論し、推論した述語を子ノードにプッシュダウンする。
前と同様に、プッシュダウンプロセスはノードの型に依
存する。図1に対する問合せ木におけるプッシュダウン
プロセスの結果は図6の問合せ木601に示される。
ズムのこの段階は、述語プッシュダウン法の一般化であ
る。プルアップとプッシュダウンの組合せによって、述
語を、木のある部分から別の部分へ移動することが可能
となる。この段階では、問合せ木をルートから出発して
トップダウン式にたどる。各ノードで、エクスポート属
性についての述語からローカル属性についての述語を推
論し、推論した述語を子ノードにプッシュダウンする。
前と同様に、プッシュダウンプロセスはノードの型に依
存する。図1に対する問合せ木におけるプッシュダウン
プロセスの結果は図6の問合せ木601に示される。
【0072】[5.4.1 SELECTノードを通じての述
語プッシュダウン]ラベルL(n)を有するSELECTノー
ドnにおいて、以下のことを行う。
語プッシュダウン]ラベルL(n)を有するSELECTノー
ドnにおいて、以下のことを行う。
【0073】・ローカル属性について以下のように新た
な述語を推論する。L(n)内の各述語αに対して、τ
-1(α)をL(n)に(もし既にあるのでなければ)追
加する。ただし、τ-1は、エクスポート変数(属性)に
ローカル変数を代入する。
な述語を推論する。L(n)内の各述語αに対して、τ
-1(α)をL(n)に(もし既にあるのでなければ)追
加する。ただし、τ-1は、エクスポート変数(属性)に
ローカル変数を代入する。
【0074】・L(n)内に既にある述語によって含意
される新たな述語をL(n)に追加する。
される新たな述語をL(n)に追加する。
【0075】・nの各子n1に対して、n1のエクスポー
ト属性または定数のみを有するL(n)のすべての述語
をL(n1)に追加する。
ト属性または定数のみを有するL(n)のすべての述語
をL(n1)に追加する。
【0076】例5。問合せ木601において、述語ptc.
MaxLen>50はルートノード603からGROUPBYノード61
3内へプッシュされている。プッシュダウン段階中に追
加された述語は問合せ木601ではイタリックで示され
ている。明確にするため、各ノードにおける完全な閉包
は示していない。
MaxLen>50はルートノード603からGROUPBYノード61
3内へプッシュされている。プッシュダウン段階中に追
加された述語は問合せ木601ではイタリックで示され
ている。明確にするため、各ノードにおける完全な閉包
は示していない。
【0077】[5.4.2 GROUPBYノードを通じての
述語プッシュダウン]SELECTノードで行われる3つのス
テップはGROUPBY三つ組301のノードでも実行しなけ
ればならない。しかし、さらに、集約項を有する述語か
ら新たな述語を推論する規則も必要である。以下に、そ
のような規則の集合を示す。これらの規則は中間ノード
のラベルL(n2)に適用しなければならない(これら
のすべての規則において、≦は<で置き換えることが可
能である)。
述語プッシュダウン]SELECTノードで行われる3つのス
テップはGROUPBY三つ組301のノードでも実行しなけ
ればならない。しかし、さらに、集約項を有する述語か
ら新たな述語を推論する規則も必要である。以下に、そ
のような規則の集合を示す。これらの規則は中間ノード
のラベルL(n2)に適用しなければならない(これら
のすべての規則において、≦は<で置き換えることが可
能である)。
【0078】・Max(B)≧cがL(n2)内にあるとする
(ただしcは定数)。Max(B)がn2内の唯一の集約項であ
る場合、B≧cをL(n2)に追加することができる。明
らかに、Max(B)がMax(B)≧cを満たす限り、Max(B)を計
算するにはB≧cを満たすタプルのみに注目すれば十分で
ある。しかし、一般には、他の集約項を計算するために
はB≧cを満たすタプルのみに注目することはできない。
そのため、Max(B)がn2内の唯一の集約項であることを
要求することにする。例えば、図6のGROUPBYノード6
13を考える。述語MaxLen>50はルートノード603か
らノード613内にプッシュされている。ローカル属性
に変換すれば、Max(t.Length)>50を得る。Max(t.Lengt
h)はGROUPBYノード613内の唯一の集約項であるた
め、述語t.Length>50を推論することができる。注意す
べき点であるが、t.Length>50をプッシュダウンするこ
とによって、t.Lengthの最大値は50より大きくなけれ
ばならないため、ビューptCustomers705においてt.L
ength>50を満たすタプルのみを考えればよいことがわか
る。
(ただしcは定数)。Max(B)がn2内の唯一の集約項であ
る場合、B≧cをL(n2)に追加することができる。明
らかに、Max(B)がMax(B)≧cを満たす限り、Max(B)を計
算するにはB≧cを満たすタプルのみに注目すれば十分で
ある。しかし、一般には、他の集約項を計算するために
はB≧cを満たすタプルのみに注目することはできない。
そのため、Max(B)がn2内の唯一の集約項であることを
要求することにする。例えば、図6のGROUPBYノード6
13を考える。述語MaxLen>50はルートノード603か
らノード613内にプッシュされている。ローカル属性
に変換すれば、Max(t.Length)>50を得る。Max(t.Lengt
h)はGROUPBYノード613内の唯一の集約項であるた
め、述語t.Length>50を推論することができる。注意す
べき点であるが、t.Length>50をプッシュダウンするこ
とによって、t.Lengthの最大値は50より大きくなけれ
ばならないため、ビューptCustomers705においてt.L
ength>50を満たすタプルのみを考えればよいことがわか
る。
【0079】・Min(B)≦cがL(n2)内にあり(ただし
cは定数)、かつ、Min(B)がn2内の唯一の集約項である
場合、B≦cをL(n2)に追加することができる。
cは定数)、かつ、Min(B)がn2内の唯一の集約項である
場合、B≦cをL(n2)に追加することができる。
【0080】[5.4.3 UNIONノードおよびINTERSE
CTIONノードを通じての述語プッシュダウン]図4に示
したようなUNION(あるいはINTERSECTION)ノード40
3を考える。τiで、ノードn403のエクスポート属
性にnのi番目のSELECT子405のエクスポート属性を
代入することを表す。すなわち、τiは、V.A1,...,V.Al
にVi.A1,...,Vi.Alを代入する。
CTIONノードを通じての述語プッシュダウン]図4に示
したようなUNION(あるいはINTERSECTION)ノード40
3を考える。τiで、ノードn403のエクスポート属
性にnのi番目のSELECT子405のエクスポート属性を
代入することを表す。すなわち、τiは、V.A1,...,V.Al
にVi.A1,...,Vi.Alを代入する。
【0081】nからその子への述語のプッシュダウンを
以下のように行う。αがL(n)内にあり、αのすべて
の属性がnのエクスポート属性である場合、τi(α)
をn403のi番目のSELECT子405のラベルに追加す
る(注意すべき点であるが、τi(α)がnのラベルに
なくても、nのラベルに追加する必要はない)。
以下のように行う。αがL(n)内にあり、αのすべて
の属性がnのエクスポート属性である場合、τi(α)
をn403のi番目のSELECT子405のラベルに追加す
る(注意すべき点であるが、τi(α)がnのラベルに
なくても、nのラベルに追加する必要はない)。
【0082】例6。図6で、本発明のアルゴリズムのプ
ッシュダウン段階によって生成されたラベルをイタリッ
ク書体で示す(例えば609)。
ッシュダウン段階によって生成されたラベルをイタリッ
ク書体で示す(例えば609)。
【0083】[5.5 ラベル最小化]トップダウン
(プッシュダウン)段階の最後に、木の多くのノードで
同じ述語が反復していることがある。その結果、もとの
木で可能なよりも早く述語を適用することができる。実
際には、もとの木の評価でさえも、述語の冗長な適用に
なる可能性はある。これは、例えば、あらかじめ定義さ
れたビューを使用してもとの問合せが形成され、ユーザ
がそれらのビューで使用される正確な述語を忘れている
ときに起こり得る(従って、そのユーザは問合せで同じ
述語を冗長に反復することになる)。本発明の移動アル
ゴリズムでは、冗長性が導入されるのには2通りの態様
がある。
(プッシュダウン)段階の最後に、木の多くのノードで
同じ述語が反復していることがある。その結果、もとの
木で可能なよりも早く述語を適用することができる。実
際には、もとの木の評価でさえも、述語の冗長な適用に
なる可能性はある。これは、例えば、あらかじめ定義さ
れたビューを使用してもとの問合せが形成され、ユーザ
がそれらのビューで使用される正確な述語を忘れている
ときに起こり得る(従って、そのユーザは問合せで同じ
述語を冗長に反復することになる)。本発明の移動アル
ゴリズムでは、冗長性が導入されるのには2通りの態様
がある。
【0084】・ローカル属性からエクスポート属性への
(またはその逆の)変換と、それに対応するプルアップ
(またはプッシュダウン)の結果、同じ述語があるノー
ドとそのノードの親に(そして、おそらくはそのノード
の他の祖先にも)現れる。しかし、あるノードの子孫で
既に適用されている述語をそのノードに適用する必要は
ない。
(またはその逆の)変換と、それに対応するプルアップ
(またはプッシュダウン)の結果、同じ述語があるノー
ドとそのノードの親に(そして、おそらくはそのノード
の他の祖先にも)現れる。しかし、あるノードの子孫で
既に適用されている述語をそのノードに適用する必要は
ない。
【0085】・存在する述語によって論理的に含意され
る述語を追加する場合。
る述語を追加する場合。
【0086】冗長性を除去することは2つの理由で重要
である。第1に、問合せの評価中に適用されるテストが
少なくなるため、時間の節約になる。第2に、不正確な
選択性評価によって冗長な述語が計画オプティマイザを
誤らせる可能性があるためである。
である。第1に、問合せの評価中に適用されるテストが
少なくなるため、時間の節約になる。第2に、不正確な
選択性評価によって冗長な述語が計画オプティマイザを
誤らせる可能性があるためである。
【0087】第1の種類の冗長性は以下のように除去さ
れる。述語αがノードnに現れており、αのすべての属
性がnに対してローカルであるが、nのエクスポート属
性のうちに別名も有するとする。nの親における述語β
がτ(α)によって論理的に含意される場合には、βは
冗長である。ただし、τはnのローカル属性にエクスポ
ート属性を代入する。
れる。述語αがノードnに現れており、αのすべての属
性がnに対してローカルであるが、nのエクスポート属
性のうちに別名も有するとする。nの親における述語β
がτ(α)によって論理的に含意される場合には、βは
冗長である。ただし、τはnのローカル属性にエクスポ
ート属性を代入する。
【0088】第2の種類の冗長性は、周知の推移簡約法
によって除去される。すなわち、ある述語が残りの述語
によって含意される場合に、その述語をラベルから除去
することを反復する。さらに述語を除去することができ
なくなったときに非冗長なラベルが得られる。
によって除去される。すなわち、ある述語が残りの述語
によって含意される場合に、その述語をラベルから除去
することを反復する。さらに述語を除去することができ
なくなったときに非冗長なラベルが得られる。
【0089】最後に、GROUPBYノード、UNIONノードおよ
びINTERSECTIONノードのラベルを完全に除去することが
できる。さらに、関数項(関数従属性および集約から生
成されたもの)を含む述語もすべてのノードから除去さ
れる。図6で星印をつけた述語611は、最小化後に残
った、実施例の最終ラベルを形成するものである。
びINTERSECTIONノードのラベルを完全に除去することが
できる。さらに、関数項(関数従属性および集約から生
成されたもの)を含む述語もすべてのノードから除去さ
れる。図6で星印をつけた述語611は、最小化後に残
った、実施例の最終ラベルを形成するものである。
【0090】[5.6 問合せ木からSQLへの変換]
問合せ木は、問合せの評価の他に、さらに書き換えた
り、コストベースの最適化をするために直接使用される
こともある。実際に、問合せ木は、従来の問合せプロセ
ッサによって使用される問合せの内部表現に類似してい
る。しかし、必要であれば、問合せ木を以下のようにし
て再びSQLに容易に変換することができる。SELECTノ
ード、UNIONノードおよびINTERSECTIONノード、ならび
にGROUPBY三つ組は適当なSQL文に変換される。WHERE
節およびHAVING節は、対応するノードの最小のラベルか
らなる。上記の例では、図2の最適化されたSQL問合
せおよびビュー201は、図6の問合せ木601に上記
の変換を適用した結果である。
問合せ木は、問合せの評価の他に、さらに書き換えた
り、コストベースの最適化をするために直接使用される
こともある。実際に、問合せ木は、従来の問合せプロセ
ッサによって使用される問合せの内部表現に類似してい
る。しかし、必要であれば、問合せ木を以下のようにし
て再びSQLに容易に変換することができる。SELECTノ
ード、UNIONノードおよびINTERSECTIONノード、ならび
にGROUPBY三つ組は適当なSQL文に変換される。WHERE
節およびHAVING節は、対応するノードの最小のラベルか
らなる。上記の例では、図2の最適化されたSQL問合
せおよびビュー201は、図6の問合せ木601に上記
の変換を適用した結果である。
【0091】[5.6.1 DAG問合せの変換]問合
せ木がDAG問合せから作成されている場合、その木の
いくつかの部分木が同じビューに対応することがある。
これらの部分木は、移動アルゴリズムの最初には同一で
あるが、アルゴリズムの最後には異なる可能性がある。
同じビューVから生成された2つの部分木T1およびT2
を考える。アルゴリズムの最後にT1およびT2が等価で
ある場合、T1およびT2のうちの1つだけを評価すれば
十分である。T1がT2に含まれる(すなわち、T1の各
ラベルがT2の対応するノードのラベルを論理的に含意
する)場合、T2のビューは、適当な選択を適用するこ
とによってT1に対するビューから計算することができ
る。いずれか一方が他方に含まれるということがない場
合でも、ある1つのビューを計算し、そのビューから2
つのビューが追加の選択によって得られるという可能性
がある。
せ木がDAG問合せから作成されている場合、その木の
いくつかの部分木が同じビューに対応することがある。
これらの部分木は、移動アルゴリズムの最初には同一で
あるが、アルゴリズムの最後には異なる可能性がある。
同じビューVから生成された2つの部分木T1およびT2
を考える。アルゴリズムの最後にT1およびT2が等価で
ある場合、T1およびT2のうちの1つだけを評価すれば
十分である。T1がT2に含まれる(すなわち、T1の各
ラベルがT2の対応するノードのラベルを論理的に含意
する)場合、T2のビューは、適当な選択を適用するこ
とによってT1に対するビューから計算することができ
る。いずれか一方が他方に含まれるということがない場
合でも、ある1つのビューを計算し、そのビューから2
つのビューが追加の選択によって得られるという可能性
がある。
【0092】[6.結論]以上の説明によって、問合せ
最適化の当業者であれば、問合せを計算するのに有利な
位置を占めるように問合せグラフ内で述語をまず伝搬さ
せてから簡約するという最適化を実行する方法は理解さ
れると考える。
最適化の当業者であれば、問合せを計算するのに有利な
位置を占めるように問合せグラフ内で述語をまず伝搬さ
せてから簡約するという最適化を実行する方法は理解さ
れると考える。
【0093】好ましい実施例では、述語はプルアップ
(すなわち、もともとその述語を含むノードの祖先ノー
ド内に伝搬させること)されてから、プッシュダウン
(すなわち、もともとその述語を含むノードとは異なる
子孫ノード内に伝搬させること)される。伝搬された述
語および伝搬されない述語の数は、述語が少なくなるよ
うに、かつ、各述語が問合せ木内で計算に有利な位置に
来るように、縮小される。このような位置の1つは、問
合せグラフのできるだけ下である。
(すなわち、もともとその述語を含むノードの祖先ノー
ド内に伝搬させること)されてから、プッシュダウン
(すなわち、もともとその述語を含むノードとは異なる
子孫ノード内に伝搬させること)される。伝搬された述
語および伝搬されない述語の数は、述語が少なくなるよ
うに、かつ、各述語が問合せ木内で計算に有利な位置に
来るように、縮小される。このような位置の1つは、問
合せグラフのできるだけ下である。
【0094】
【発明の効果】本発明の技術は、ブロックを併合するこ
とによる最適化や、マジック集合変換による最適化が不
可能な状況でも使用可能であり、また、これらやその他
の問合せ最適化法と組み合わせることも可能である。本
発明の技術の一部、例えば、述語を最初に問合せグラフ
の上方に伝搬させた後で下方に伝搬させること、集約を
通じて述語を移動すること、関数従属性を使用して述語
を演繹し移動すること、EXISTS述語およびNOT EXISTS述
語を移動すること、冗長な述語を除去すること、など
は、本発明の述語移動法とは独立に使用することも可能
である。
とによる最適化や、マジック集合変換による最適化が不
可能な状況でも使用可能であり、また、これらやその他
の問合せ最適化法と組み合わせることも可能である。本
発明の技術の一部、例えば、述語を最初に問合せグラフ
の上方に伝搬させた後で下方に伝搬させること、集約を
通じて述語を移動すること、関数従属性を使用して述語
を演繹し移動すること、EXISTS述語およびNOT EXISTS述
語を移動すること、冗長な述語を除去すること、など
は、本発明の述語移動法とは独立に使用することも可能
である。
【0095】実施例はSQL問合せによってアクセスさ
れる関係データベースを使用したが、本発明の技術は、
問合せがデータに適用され、問合せを解析して有効非巡
回グラフを生成することができるような任意のシステム
で使用可能である。問合せグラフにおいて述語を移動し
述語を簡約するには、ここで開示した以外の技術を使用
することも可能である。例えば、場合によっては、計算
の後で述語を適用するほうが効率的であり、本発明の他
の実施例は、述語簡約段階にこのような述語のテストを
組み込むことができる。述語を移動しそれを簡約するの
に実際にいかなるアルゴリズムを使用するかはもちろん
最適化するシステムの種類に依存する。
れる関係データベースを使用したが、本発明の技術は、
問合せがデータに適用され、問合せを解析して有効非巡
回グラフを生成することができるような任意のシステム
で使用可能である。問合せグラフにおいて述語を移動し
述語を簡約するには、ここで開示した以外の技術を使用
することも可能である。例えば、場合によっては、計算
の後で述語を適用するほうが効率的であり、本発明の他
の実施例は、述語簡約段階にこのような述語のテストを
組み込むことができる。述語を移動しそれを簡約するの
に実際にいかなるアルゴリズムを使用するかはもちろん
最適化するシステムの種類に依存する。
【図1】関係およびビューの例の集合の図である。
【図2】図1の関係およびビューの最適化版の図であ
る。
る。
【図3】GROUPBYノード内のサブノードの図である。
【図4】UNIONまたはINTERSECTIONノードの構造の図で
ある。
ある。
【図5】最適化中の問合せ木の例の図である。
【図6】最適化後の図5の問合せ木の図である。
【図7】例で使用される基底関係を示す図である。
103 ビューfgAccounts(E1) 105 ビューptCustomers(F1) 107 問合せQ1 109 ローカル属性 111 エクスポート属性 501 問合せ木 503 ルート 505 ptCustomersノード 507 fgAccountsノード 511 ラベル 513 述語 701 基底関係 703 calls関係 705 customers関係 707 users関係 709 secret関係 711 promotion関係
───────────────────────────────────────────────────── フロントページの続き (72)発明者 インダーパル シン ムミック アメリカ合衆国、07922 ニュージャージ ー、スウェンソン サークル 85
Claims (25)
- 【請求項1】 グラフの少なくとも1つのノードが、そ
のノードで参照される属性に適用される少なくとも1つ
の述語を有するラベルを含むように問合せに対する問合
せグラフを作成する作成ステップと、 グラフの親ノードにおいて、当該親ノードのいずれかの
子ノードに属するラベル内の述語から、当該親ノードの
ラベル内で第1の新たな述語を推論する第1推論ステッ
プと、 グラフの子ノードにおいて、当該子ノードのいずれかの
親ノードに属するラベル内の述語から、当該子ノードの
ラベル内で第2の新たな述語を推論する第2推論ステッ
プと、 問合せグラフから最適化された問合せを生成するステッ
プとからなることを特徴とする、問合せ最適化方法。 - 【請求項2】 問合せグラフ内の述語の数を縮小する縮
小ステップをさらに有することを特徴とする請求項1の
方法。 - 【請求項3】 前記縮小ステップが、複数回適用される
述語がないように述語の数を縮小することを特徴とする
請求項2の方法。 - 【請求項4】 前記縮小ステップが、ノードのラベルか
ら、当該ノードの子孫において適用される述語を除去す
るステップを有することを特徴とする請求項2の方法。 - 【請求項5】 前記縮小ステップが、ラベル内で他の述
語によって含意されるラベル内の述語を除去するステッ
プを有することを特徴とする請求項2または4の方法。 - 【請求項6】 前記第1推論ステップが、葉ノードであ
る子ノードから出発して前記親ノードに親ノードがなく
なるときまで反復して実行され、 前記第2推論ステップが、親ノードのない親ノードから
出発して、前記子ノードが葉ノードになるときまで反復
して実行されることを特徴とする請求項1または2の方
法。 - 【請求項7】 問合せグラフの各ノードは問合せにおけ
る計算を表し、 前記第1の新たな述語を推論するために使用される述語
は、子ノードによって表される計算の結果に現れるエク
スポート属性に関する述語であり、 前記第2の新たな述語を推論するために使用される述語
はエクスポート属性に関する述語であることを特徴とす
る請求項1または2の方法。 - 【請求項8】 前記第1推論ステップが、エクスポート
属性に関する述語を、ノード内で当該エクスポート属性
に対応するローカル属性に適用するステップからなるこ
とを特徴とする請求項7の方法。 - 【請求項9】 前記第2推論ステップが、エクスポート
属性に関する述語を、ノード内で当該エクスポート属性
に対応するローカル属性に適用するステップからなるこ
とを特徴とする請求項7の方法。 - 【請求項10】 前記第1推論ステップにおいて、子ノ
ードに属するラベルに関する述語が集約演算を含むこと
を特徴とする請求項1または2の方法。 - 【請求項11】 前記第1推論ステップは、前記第1の
新たな述語が前記集約演算の結果を限定するように前記
第1の新たな述語を推論することを特徴とする請求項1
0の方法。 - 【請求項12】 前記第2推論ステップにおいて、親ノ
ードに属するラベルに関する述語が集約演算を含むこと
を特徴とする請求項1または2の方法。 - 【請求項13】 前記第2推論ステップは、前記第2の
新たな述語が前記集約演算の結果を限定するように前記
第2の新たな述語を推論することを特徴とする請求項1
2の方法。 - 【請求項14】 親ノードにおいて、ラベル内の述語に
よって含意される第3の新たな述語を追加するステップ
をさらに有することを特徴とする請求項1または2の方
法。 - 【請求項15】 前記作成ステップが、基底関係の属性
についての関数から述語を推論するステップをさらに有
することを特徴とする請求項1または2の方法。 - 【請求項16】 子ノードにおいて、ラベル内の述語に
よって含意される第4の新たな述語を追加するステップ
をさらに有することを特徴とする請求項1または2の方
法。 - 【請求項17】 グラフの少なくとも1つのノードが、
そのノードで参照される属性に適用される少なくとも1
つの述語を有するラベルを含むように問合せに対する問
合せグラフを作成する作成ステップと、 問合せグラフ内の述語の数を縮小する縮小ステップと、 問合せグラフから最適化された問合せを生成するステッ
プとからなることを特徴とする、問合せ最適化方法。 - 【請求項18】 前記縮小ステップが、複数回適用され
る述語がないように述語の数を縮小することを特徴とす
る請求項17の方法。 - 【請求項19】 前記縮小ステップが、ノードのラベル
から、当該ノードの子孫において適用される述語を除去
するステップを有することを特徴とする請求項17の方
法。 - 【請求項20】 前記縮小ステップが、ラベル内で他の
述語によって含意されるラベル内の述語を除去するステ
ップを有することを特徴とする請求項17または19の
方法。 - 【請求項21】 グラフの少なくとも1つのノードが、
そのノードで参照される属性に適用される少なくとも1
つの述語を有するラベルを含むように問合せに対する問
合せグラフを作成する作成ステップと、 集約演算に関連する新たな述語を推論し、その述語をラ
ベルに追加するステップと、 前記集約演算が限定されるようにグラフ内で前記新たな
述語を移動するステップと、 問合せグラフから最適化された問合せを生成するステッ
プとからなることを特徴とする、問合せ最適化方法。 - 【請求項22】 グラフの少なくとも1つのノードが、
そのノードで参照される属性に適用される少なくとも1
つの述語を有するラベルを含むように問合せに対する問
合せグラフを作成する作成ステップと、 基底関係についての関数の結果に関連する新たな述語を
推論し、その述語をラベルに追加するステップと、 問合せを計算する際に前記新たな述語がより効率的に適
用されるようにグラフ内で前記新たな述語を移動するス
テップと、 問合せグラフから最適化された問合せを生成するステッ
プとからなることを特徴とする、問合せ最適化方法。 - 【請求項23】 グラフの少なくとも1つのノードが、
そのノードで参照される属性に適用される少なくとも1
つの述語を有するラベルを含むように問合せに対する問
合せグラフを作成する作成ステップと、 グラフ内の1個以上の述語を他のノードに移動する移動
ステップと、 問合せグラフ内の述語の数を縮小する縮小ステップと、 問合せグラフから最適化された問合せを生成するステッ
プとからなることを特徴とする、問合せ最適化方法。 - 【請求項24】 前記移動ステップが、1個以上の述語
を他のノードに伝搬することによって実行されることを
特徴とする請求項23の方法。 - 【請求項25】 前記縮小ステップが、複数回適用され
る述語がないように述語の数を縮小することを特徴とす
る請求項23または24の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/254,215 US5659725A (en) | 1994-06-06 | 1994-06-06 | Query optimization by predicate move-around |
US254215 | 1994-06-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07334529A true JPH07334529A (ja) | 1995-12-22 |
Family
ID=22963381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7161573A Pending JPH07334529A (ja) | 1994-06-06 | 1995-06-06 | 問合せ最適化方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5659725A (ja) |
EP (1) | EP0689148A1 (ja) |
JP (1) | JPH07334529A (ja) |
CA (1) | CA2147678A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002163290A (ja) * | 2000-09-27 | 2002-06-07 | Microsoft Corp | クエリ最適化のためのコストに基づく具体化ビューの選択 |
Families Citing this family (124)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7315860B1 (en) | 1994-09-01 | 2008-01-01 | Computer Associates Think, Inc. | Directory service system and method with tolerance for data entry storage and output |
JPH10505690A (ja) | 1994-09-01 | 1998-06-02 | データクラフト テクノロジーズ プロプライエタリー リミテッド | X.500システムおよび方法 |
US8065338B2 (en) | 1995-08-30 | 2011-11-22 | Computer Associates Think, Inc. | Directory searching methods and systems |
US5761657A (en) * | 1995-12-21 | 1998-06-02 | Ncr Corporation | Global optimization of correlated subqueries and exists predicates |
US6088524A (en) * | 1995-12-27 | 2000-07-11 | Lucent Technologies, Inc. | Method and apparatus for optimizing database queries involving aggregation predicates |
US5732258A (en) * | 1996-02-08 | 1998-03-24 | Oracle Corporation | Method and apparatus for efficiently evaluating exists and not exists equivalent subqueries |
US5822747A (en) * | 1996-08-23 | 1998-10-13 | Tandem Computers, Inc. | System and method for optimizing database queries |
US6021405A (en) * | 1996-08-23 | 2000-02-01 | Tandem Computers, Inc. | System and method for optimizing database queries with improved performance enhancements |
US6006214A (en) * | 1996-12-04 | 1999-12-21 | International Business Machines Corporation | Database management system, method, and program for providing query rewrite transformations for nested set elimination in database views |
US5819257A (en) * | 1997-01-31 | 1998-10-06 | Lucent Technologies Inc. | Process for providing transitive closure using fourth generation structure query language (SQL) |
US6029162A (en) * | 1997-01-31 | 2000-02-22 | Lucent Technologies, Inc. | Graph path derivation using fourth generation structured query language |
US7631012B2 (en) | 1997-05-22 | 2009-12-08 | Computer Associates Think, Inc. | System and method of operating a database |
US5963934A (en) * | 1997-06-30 | 1999-10-05 | International Business Machines Corporation | Intelligent compilation of scripting language for query processing systems |
US5864840A (en) * | 1997-06-30 | 1999-01-26 | International Business Machines Corporation | Evaluation of existential and universal subquery in a relational database management system for increased efficiency |
US5940822A (en) * | 1997-08-29 | 1999-08-17 | International Business Machines Corporation | Encoding method of members related by multiple concept or group hierarchies and identification of members in a corpus or a database that are descendants of one or more selected concepts or groups from the encoding |
US6018734A (en) * | 1997-09-29 | 2000-01-25 | Triada, Ltd. | Multi-dimensional pattern analysis |
US6105035A (en) * | 1998-02-17 | 2000-08-15 | Lucent Technologies, Inc. | Method by which notions and constructs of an object oriented programming language can be implemented using a structured query language (SQL) |
US6199063B1 (en) * | 1998-03-27 | 2001-03-06 | Red Brick Systems, Inc. | System and method for rewriting relational database queries |
US6438541B1 (en) * | 1999-02-09 | 2002-08-20 | Oracle Corp. | Method and article for processing queries that define outer joined views |
US7167853B2 (en) * | 1999-05-20 | 2007-01-23 | International Business Machines Corporation | Matching and compensation tests for optimizing correlated subqueries within query using automatic summary tables |
US6847962B1 (en) * | 1999-05-20 | 2005-01-25 | International Business Machines Corporation | Analyzing, optimizing and rewriting queries using matching and compensation between query and automatic summary tables |
US6681220B1 (en) * | 1999-05-28 | 2004-01-20 | International Business Machines Corporation | Reduction and optimization of information processing systems |
US6385603B1 (en) | 1999-06-14 | 2002-05-07 | International Business Machines Corporation | Joined table expression optimization by query transformation |
US6711585B1 (en) | 1999-06-15 | 2004-03-23 | Kanisa Inc. | System and method for implementing a knowledge management system |
US6438542B1 (en) | 1999-08-30 | 2002-08-20 | International Business Machines Corporation | Method of optimally determining lossless joins |
AUPQ428499A0 (en) | 1999-11-26 | 1999-12-23 | Computer Associates Pty. Ltd. | A method and apparatus for operating a data base |
US6732088B1 (en) * | 1999-12-14 | 2004-05-04 | Xerox Corporation | Collaborative searching by query induction |
US6529896B1 (en) * | 2000-02-17 | 2003-03-04 | International Business Machines Corporation | Method of optimizing a query having an existi subquery and a not-exists subquery |
EP1275042A2 (en) | 2000-03-06 | 2003-01-15 | Kanisa Inc. | A system and method for providing an intelligent multi-step dialog with a user |
US6701306B1 (en) * | 2000-03-15 | 2004-03-02 | Cadence Design Systems, Inc. | Methods and apparatus for manipulating polygons in a multidimensional space |
US6721724B1 (en) * | 2000-03-31 | 2004-04-13 | Microsoft Corporation | Validating multiple execution plans for database queries |
AU2001264928A1 (en) * | 2000-05-25 | 2001-12-03 | Kanisa Inc. | System and method for automatically classifying text |
US6839730B1 (en) * | 2000-07-14 | 2005-01-04 | Novell, Inc. | Method and system for efficiently matching events with subscribers in a content-based publish-subscribe system |
US6748377B1 (en) * | 2000-10-18 | 2004-06-08 | International Business Machines Corporation | Facilitating query pushdown in a multi-tiered database environment |
US20020133392A1 (en) * | 2001-02-22 | 2002-09-19 | Angel Mark A. | Distributed customer relationship management systems and methods |
WO2002089009A2 (en) * | 2001-04-27 | 2002-11-07 | Computer Associates Think, Inc. | System and method of operating a database |
US6980984B1 (en) | 2001-05-16 | 2005-12-27 | Kanisa, Inc. | Content provider systems and methods using structured data |
US20020184612A1 (en) * | 2001-06-01 | 2002-12-05 | Hunt Joseph R. | Runtime configurable caching for component factories |
US6691101B2 (en) * | 2001-06-21 | 2004-02-10 | Sybase, Inc. | Database system providing optimization of group by operator over a union all |
US6801919B2 (en) | 2001-07-27 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Object oriented database interface encapsulation that allows for chronologically overlapping transactions in a multi-threaded environment |
US6778990B2 (en) | 2001-07-27 | 2004-08-17 | Hewlett-Packard Development Company, L.P. | Dynamic component activation method using a relational database as the repository for registration information |
AUPR796701A0 (en) * | 2001-09-27 | 2001-10-25 | Plugged In Communications Pty Ltd | Database query system and method |
US6757677B2 (en) * | 2001-09-28 | 2004-06-29 | Ncr Corporation | Providing a join plan using group-by operator |
US6915290B2 (en) * | 2001-12-11 | 2005-07-05 | International Business Machines Corporation | Database query optimization apparatus and method that represents queries as graphs |
US20030115191A1 (en) * | 2001-12-17 | 2003-06-19 | Max Copperman | Efficient and cost-effective content provider for customer relationship management (CRM) or other applications |
US7206778B2 (en) | 2001-12-17 | 2007-04-17 | Knova Software Inc. | Text search ordered along one or more dimensions |
US7024624B2 (en) * | 2002-01-07 | 2006-04-04 | Kenneth James Hintz | Lexicon-based new idea detector |
CA2374271A1 (en) * | 2002-03-01 | 2003-09-01 | Ibm Canada Limited-Ibm Canada Limitee | Redundant join elimination and sub-query elimination using subsumption |
US20030220917A1 (en) * | 2002-04-03 | 2003-11-27 | Max Copperman | Contextual search |
US6983275B2 (en) * | 2002-04-16 | 2006-01-03 | International Business Machines Corporation | Optimizing database query by generating, determining the type of derived predicate based on monotonicity of the column generating expression for each remaining inequality predicate in the list of unexamined predicates |
US9569797B1 (en) | 2002-05-30 | 2017-02-14 | Consumerinfo.Com, Inc. | Systems and methods of presenting simulated credit score information |
US9400589B1 (en) | 2002-05-30 | 2016-07-26 | Consumerinfo.Com, Inc. | Circular rotational interface for display of consumer credit information |
US9710852B1 (en) | 2002-05-30 | 2017-07-18 | Consumerinfo.Com, Inc. | Credit report timeline user interface |
US7447686B2 (en) * | 2002-11-22 | 2008-11-04 | Sas Institute Inc. | Computer-implemented system and method for handling database statements |
US7392239B2 (en) * | 2003-04-14 | 2008-06-24 | International Business Machines Corporation | System and method for querying XML streams |
US7155440B1 (en) * | 2003-04-29 | 2006-12-26 | Cadence Design Systems, Inc. | Hierarchical data processing |
US7171398B2 (en) * | 2003-10-16 | 2007-01-30 | International Business Machines Corporation | Outer and exception join to inner join normalization |
US7725455B1 (en) | 2003-12-31 | 2010-05-25 | Teradata Us, Inc. | Computing aggregates on distinct attribute values |
US20060036567A1 (en) * | 2004-08-12 | 2006-02-16 | Cheng-Yew Tan | Method and apparatus for organizing searches and controlling presentation of search results |
US8732004B1 (en) | 2004-09-22 | 2014-05-20 | Experian Information Solutions, Inc. | Automated analysis of data to generate prospect notifications based on trigger events |
US7711636B2 (en) | 2006-03-10 | 2010-05-04 | Experian Information Solutions, Inc. | Systems and methods for analyzing data |
US8271478B2 (en) * | 2006-07-27 | 2012-09-18 | Sap Ag | Fast algorithms for computing semijoin reduction sequences |
US8694524B1 (en) | 2006-08-28 | 2014-04-08 | Teradata Us, Inc. | Parsing a query |
US20080249984A1 (en) * | 2007-04-03 | 2008-10-09 | Coimbatore Srinivas J | Use of Graphical Objects to Customize Content |
US8832073B2 (en) | 2007-06-29 | 2014-09-09 | Alcatel Lucent | Method and apparatus for efficient aggregate computation over data streams |
US8504733B1 (en) * | 2007-07-31 | 2013-08-06 | Hewlett-Packard Development Company, L.P. | Subtree for an aggregation system |
US9690820B1 (en) | 2007-09-27 | 2017-06-27 | Experian Information Solutions, Inc. | Database system for triggering event notifications based on updates to database records |
US9990674B1 (en) | 2007-12-14 | 2018-06-05 | Consumerinfo.Com, Inc. | Card registry systems and methods |
US8127986B1 (en) | 2007-12-14 | 2012-03-06 | Consumerinfo.Com, Inc. | Card registry systems and methods |
US8312033B1 (en) | 2008-06-26 | 2012-11-13 | Experian Marketing Solutions, Inc. | Systems and methods for providing an integrated identifier |
US9256904B1 (en) * | 2008-08-14 | 2016-02-09 | Experian Information Solutions, Inc. | Multi-bureau credit file freeze and unfreeze |
US8498996B2 (en) | 2008-11-03 | 2013-07-30 | Sas Institute Inc. | Computer-implemented method and system for handling and transforming database queries in a fourth generation language |
US8060424B2 (en) | 2008-11-05 | 2011-11-15 | Consumerinfo.Com, Inc. | On-line method and system for monitoring and reporting unused available credit |
US20100174638A1 (en) | 2009-01-06 | 2010-07-08 | ConsumerInfo.com | Report existence monitoring |
US8943058B1 (en) | 2009-12-14 | 2015-01-27 | Teradata Us, Inc. | Calculating aggregates of multiple combinations of a given set of columns |
US9652802B1 (en) | 2010-03-24 | 2017-05-16 | Consumerinfo.Com, Inc. | Indirect monitoring and reporting of a user's credit data |
US8930262B1 (en) | 2010-11-02 | 2015-01-06 | Experian Technology Ltd. | Systems and methods of assisted strategy design |
US9147042B1 (en) | 2010-11-22 | 2015-09-29 | Experian Information Solutions, Inc. | Systems and methods for data verification |
US9558519B1 (en) | 2011-04-29 | 2017-01-31 | Consumerinfo.Com, Inc. | Exposing reporting cycle information |
US9665854B1 (en) | 2011-06-16 | 2017-05-30 | Consumerinfo.Com, Inc. | Authentication alerts |
US8635206B2 (en) * | 2011-06-30 | 2014-01-21 | International Business Machines Corporation | Database query optimization |
US9483606B1 (en) | 2011-07-08 | 2016-11-01 | Consumerinfo.Com, Inc. | Lifescore |
US9106691B1 (en) | 2011-09-16 | 2015-08-11 | Consumerinfo.Com, Inc. | Systems and methods of identity protection and management |
US8738516B1 (en) | 2011-10-13 | 2014-05-27 | Consumerinfo.Com, Inc. | Debt services candidate locator |
US9853959B1 (en) | 2012-05-07 | 2017-12-26 | Consumerinfo.Com, Inc. | Storage and maintenance of personal data |
US8825633B2 (en) | 2012-05-15 | 2014-09-02 | Sas Institute Inc. | System, method, and data structure for automatically generating database queries which are data model independent and cardinality independent |
US10055727B2 (en) * | 2012-11-05 | 2018-08-21 | Mfoundry, Inc. | Cloud-based systems and methods for providing consumer financial data |
US9654541B1 (en) | 2012-11-12 | 2017-05-16 | Consumerinfo.Com, Inc. | Aggregating user web browsing data |
US9916621B1 (en) | 2012-11-30 | 2018-03-13 | Consumerinfo.Com, Inc. | Presentation of credit score factors |
US10255598B1 (en) | 2012-12-06 | 2019-04-09 | Consumerinfo.Com, Inc. | Credit card account data extraction |
US9697263B1 (en) | 2013-03-04 | 2017-07-04 | Experian Information Solutions, Inc. | Consumer data request fulfillment system |
US9406085B1 (en) | 2013-03-14 | 2016-08-02 | Consumerinfo.Com, Inc. | System and methods for credit dispute processing, resolution, and reporting |
US9870589B1 (en) | 2013-03-14 | 2018-01-16 | Consumerinfo.Com, Inc. | Credit utilization tracking and reporting |
US10102570B1 (en) | 2013-03-14 | 2018-10-16 | Consumerinfo.Com, Inc. | Account vulnerability alerts |
US10664936B2 (en) | 2013-03-15 | 2020-05-26 | Csidentity Corporation | Authentication systems and methods for on-demand products |
US9633322B1 (en) | 2013-03-15 | 2017-04-25 | Consumerinfo.Com, Inc. | Adjustment of knowledge-based authentication |
US10685398B1 (en) | 2013-04-23 | 2020-06-16 | Consumerinfo.Com, Inc. | Presenting credit score information |
US9721147B1 (en) | 2013-05-23 | 2017-08-01 | Consumerinfo.Com, Inc. | Digital identity |
US9443268B1 (en) | 2013-08-16 | 2016-09-13 | Consumerinfo.Com, Inc. | Bill payment and reporting |
US10325314B1 (en) | 2013-11-15 | 2019-06-18 | Consumerinfo.Com, Inc. | Payment reporting systems |
US9477737B1 (en) | 2013-11-20 | 2016-10-25 | Consumerinfo.Com, Inc. | Systems and user interfaces for dynamic access of multiple remote databases and synchronization of data based on user rules |
US20150261860A1 (en) * | 2014-03-12 | 2015-09-17 | Kaushal MITTAL | Predicate execution in shared distributed computing environment |
USD760256S1 (en) | 2014-03-25 | 2016-06-28 | Consumerinfo.Com, Inc. | Display screen or portion thereof with graphical user interface |
USD759689S1 (en) | 2014-03-25 | 2016-06-21 | Consumerinfo.Com, Inc. | Display screen or portion thereof with graphical user interface |
USD759690S1 (en) | 2014-03-25 | 2016-06-21 | Consumerinfo.Com, Inc. | Display screen or portion thereof with graphical user interface |
US9892457B1 (en) | 2014-04-16 | 2018-02-13 | Consumerinfo.Com, Inc. | Providing credit data in search results |
US10373240B1 (en) | 2014-04-25 | 2019-08-06 | Csidentity Corporation | Systems, methods and computer-program products for eligibility verification |
US10303726B2 (en) * | 2014-11-13 | 2019-05-28 | Sap Se | Decoupling filter injection and evaluation by forced pushdown of filter attributes in calculation models |
US11410230B1 (en) | 2015-11-17 | 2022-08-09 | Consumerinfo.Com, Inc. | Realtime access and control of secure regulated data |
US10757154B1 (en) | 2015-11-24 | 2020-08-25 | Experian Information Solutions, Inc. | Real-time event-based notification system |
WO2018144612A1 (en) | 2017-01-31 | 2018-08-09 | Experian Information Solutions, Inc. | Massive scale heterogeneous data ingestion and user resolution |
US10970284B2 (en) * | 2017-05-12 | 2021-04-06 | Oracle International Corporation | Dynamic self-reconfiguration of nodes in a processing pipeline |
US10735183B1 (en) | 2017-06-30 | 2020-08-04 | Experian Information Solutions, Inc. | Symmetric encryption for private smart contracts among multiple parties in a private peer-to-peer network |
US10223417B1 (en) * | 2018-06-13 | 2019-03-05 | Stardog Union | System and method for reducing query-related resource usage in a data retrieval process |
US10303688B1 (en) | 2018-06-13 | 2019-05-28 | Stardog Union | System and method for reducing data retrieval delays via prediction-based generation of data subgraphs |
US10599719B2 (en) | 2018-06-13 | 2020-03-24 | Stardog Union | System and method for providing prediction-model-based generation of a graph data model |
AU2019284618B2 (en) * | 2018-06-13 | 2024-05-16 | Stardog Union | Multi-source-type interoperability and/or information retrieval optimization |
US10911234B2 (en) | 2018-06-22 | 2021-02-02 | Experian Information Solutions, Inc. | System and method for a token gateway environment |
US10880313B2 (en) | 2018-09-05 | 2020-12-29 | Consumerinfo.Com, Inc. | Database platform for realtime updating of user data from third party sources |
US11315179B1 (en) | 2018-11-16 | 2022-04-26 | Consumerinfo.Com, Inc. | Methods and apparatuses for customized card recommendations |
WO2020146667A1 (en) | 2019-01-11 | 2020-07-16 | Experian Information Solutions, Inc. | Systems and methods for secure data aggregation and computation |
US11238656B1 (en) | 2019-02-22 | 2022-02-01 | Consumerinfo.Com, Inc. | System and method for an augmented reality experience via an artificial intelligence bot |
US11941065B1 (en) | 2019-09-13 | 2024-03-26 | Experian Information Solutions, Inc. | Single identifier platform for storing entity data |
CN111241127B (zh) * | 2020-01-16 | 2023-01-31 | 华南师范大学 | 基于谓语组合的sparql查询优化方法、系统、存储介质及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307445A (en) * | 1991-12-02 | 1994-04-26 | International Business Machines Corporation | Query optimization by type lattices in object-oriented logic programs and deductive databases |
US5367675A (en) * | 1991-12-13 | 1994-11-22 | International Business Machines Corporation | Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query |
US5412804A (en) * | 1992-04-30 | 1995-05-02 | Oracle Corporation | Extending the semantics of the outer join operator for un-nesting queries to a data base |
-
1994
- 1994-06-06 US US08/254,215 patent/US5659725A/en not_active Expired - Fee Related
-
1995
- 1995-04-24 CA CA002147678A patent/CA2147678A1/en not_active Abandoned
- 1995-05-30 EP EP95303634A patent/EP0689148A1/en not_active Withdrawn
- 1995-06-06 JP JP7161573A patent/JPH07334529A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002163290A (ja) * | 2000-09-27 | 2002-06-07 | Microsoft Corp | クエリ最適化のためのコストに基づく具体化ビューの選択 |
Also Published As
Publication number | Publication date |
---|---|
EP0689148A1 (en) | 1995-12-27 |
US5659725A (en) | 1997-08-19 |
CA2147678A1 (en) | 1995-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH07334529A (ja) | 問合せ最適化方法 | |
Levy et al. | Query optimization by predicate move-around | |
Simitsis et al. | State-space optimization of ETL workflows | |
US5301317A (en) | System for adapting query optimization effort to expected execution time | |
AU773177B2 (en) | System for maintaining precomputed views | |
US5890148A (en) | System and method for generating uniqueness information for optimizing an SQL query | |
US7814042B2 (en) | Selecting candidate queries | |
US7275056B2 (en) | System and method for transforming queries using window aggregation | |
US5680602A (en) | Trigger generation in an active database management system | |
US5963936A (en) | Query processing system that computes GROUPING SETS, ROLLUP, and CUBE with a reduced number of GROUP BYs in a query graph model | |
US5930785A (en) | Method for detecting and optimizing queries with encoding/decoding tables | |
US6453314B1 (en) | System and method for selective incremental deferred constraint processing after bulk loading data | |
Yang et al. | Algorithms for materialized view design in data warehousing environment | |
US7246108B2 (en) | Reusing optimized query blocks in query processing | |
US5469568A (en) | Method for choosing largest selectivities among eligible predicates of join equivalence classes for query optimization | |
US5706494A (en) | System and method for constraint checking bulk data in a database | |
JPH09190452A (ja) | データベース質問をコンピュータで実行する方法 | |
US20060026133A1 (en) | Determining query cost based on subquery filtering factor | |
US20060161528A1 (en) | Method for regenerating selected rows for an otherwise static result set | |
JP2003527642A (ja) | リレーショナルデータベース照会をリライトするためのシステム及び方法 | |
US20030135485A1 (en) | Method and system for rowcount estimation with multi-column statistics and histograms | |
US20110082856A1 (en) | System and method for optimizing queries | |
Yen et al. | An efficient data mining approach for discovering interesting knowledge from customer transactions | |
Smith et al. | Monotonically improving approximate answers to relational algebra queries | |
Slivinskas et al. | A foundation for conventional and temporal query optimization addressing duplicates and ordering |