1

アルゴリズムでは、ユーザーはクエリを渡します。たとえば、次のようになります。

SELECT o_orderdate, o_orderpriority FROM h_orders WHERE rownum <= 5

クエリは次を返します。

1996-01-02  5-LOW
1996-12-01  1-URGENT
1993-10-14  5-LOW
1995-10-11  5-LOW
1994-07-30  5-LOW

アルゴリズムは選択属性 (上記の例) のカウントを必要o_orderdate, o_orderpriorityとするため、クエリを次のように書き換えます。

SELECT o_orderdate, count(o_orderdate) FROM 
  (SELECT o_orderdate, o_orderpriority FROM h_orders WHERE rownum <= 5) 
GROUP BY o_orderdate

このクエリは次を返します。

1992-01-01  5

ただし、意図した結果は次のとおりです。

1996-12-01  1
1995-10-11  1
1994-07-30  1
1996-01-02  1
1993-10-14  1

解析段階を書き直す方法や、ユーザーが構文的に異なるクエリを渡して上記の結果を受け取る方法はありますか?

4

3 に答える 3

2

内部クエリによって返される行は、オプティマイザが必要なデータ セットの一部として行を識別する順序に依存するため、本質的に非決定論的です。変更された述語による実行計画の変更は、行が返される順序を変更する可能性があり、テーブルに追加された新しい行によって、含まれる行も変更される可能性があります。

于 2013-04-07T15:28:30.680 に答える