プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service EQLリファレンス

E65371-04
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

入力サイズの制御

文の入力サイズは、問合せの評価時間に大きく影響する場合があります。

文の入力は、FROM句で定義されます。 可能な場合、不要なレコードの入力を避けるために、コレクション・レコードを使用するのではなく、別の文からすでに完了した結果を使用してください。

次の問合せを考えてみます。 最初の問合せでは、各文への入力はナビゲーション状態の順序のサイズになります。 最初の2つの文(合計と合計)では、データが2つの粒度レベルで集計されます。 最後の文では、データ・セットは、データ内に存在する月と年の組合せを識別することのみを目的として再度アクセスされます。 対象の計算結果は、前に計算された結果から導出されます:
DEFINE Sums AS SELECT
  SUM(a) AS MonthlyTotal
FROM SaleState
GROUP BY month,year;

DEFINE Totals AS SELECT
  SUM(a) AS YearlyTotal
FROM SaleState
GROUP BY year;

DEFINE Result AS SELECT
  Sums[month,year].MonthlyTotal AS MonthlyTotal,
  Sums[month,year].MonthlyTotal/Totals[year].YearlyTotal AS Fraction
FROM SaleState
GROUP BY month,year
次のリライトされた同じ問合せでは、このデータセットのDgraphデータベースには1回のみアクセスされます。 最初の文は、データベースにアクセスして月次合計をコンピュートします。 2番目の文は、最初の文の結果を使用して年間合計をコンピュートするように変更されています。 1か月当たりのレコード数が多い場合、その削減は桁違いに複数のオーダーになる可能性があります。 最後に、最初の文の結果を使用するように最後の文も変更されています。 最初の文では、データ・セットのすべての有効な月/年の組合せがすでに識別されています。 有効な組合せを識別するためだけで、広範なデータ・セット(数百万件のレコードなど)にアクセスするよりも、月/年のペアははるかに小さい(数十個のレコード)結果から読み取られます:
DEFINE Sums AS SELECT
  SUM(a) AS MonthlyTotal
FROM SalesState
GROUP BY month,year;

DEFINE Totals AS SELECT
  SUM(MonthlyTotal) AS YearlyTotal
FROM Sums
GROUP year;

DEFINE Result AS SELECT
  MonthlyTotal AS MonthlyTotal,
  MonthlyTotal/Totals[year].YearlyTotal AS Fraction
FROM Sums

データ・セット・サイズに依存しない定数の定義

一般的なプラクティスは、次に示す最初の問合せに示すように、1つのグループを通じて問合せの定数を定義することです。 この問合せの入力は、入力から何も使用されていないにもかかわらず、ナビゲーション状態全体です:
DEFINE Constants AS SELECT
  500 AS DefaultQuota
FROM SaleState
GROUP
入力は実際には必要ないため、この2番目の例に示すように、非常に限定的なフィルタを使用して、可能な最小サイズに入力を制限します:
DEFINE Constants AS SELECT
  500 AS DefaultQuota
FROM SaleState
WHERE FactSales_ProductKey IS NOT NULL
GROUP

この例では、FROM SalesStateは、販売コレクションの一意のプロパティ・キーです。