- カテゴリ:
システム関数 (システム情報)
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS¶
指定されたテーブルに 検索最適化 を追加し、検索最適化用の特定の列を構成するための推定コストを返します。
重要
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS 関数によって返されるコストの見積もりはベストエフォートです。実際の実現コストは、見積もられたコストとは最大50%(またはまれに数倍)異なる場合があります。
構築およびストレージのコストの見積もりは、テーブル内にある行のサブセットのサンプリングに基づいています。
メンテナンスコストの見積もりは、テーブル内の最近の作成、削除、更新アクティビティに基づいています。
構文¶
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('<table_name>' [ , '<search_method_with_target>' ])
引数¶
必須:
table_name
検索最適化コストを見積もるテーブル。
テーブル名が完全修飾されていない場合(
db_name.schema_name.table_name
またはschema_name.table_name
の形式)、関数はセッションの現在のスキーマにあるテーブルを探します。名前全体を一重引用符で囲む必要があります。
オプション:
search_method_with_target
ALTER TABLE ... ADD SEARCH OPTIMIZATION コマンドの ON 句で指定できるものと同じように、 列構成 の 検索方法とターゲット を指定します。
この引数全体を一重引用符で囲む必要があります。この文字列内では、 必要に応じて 列名を二重引用符で囲みます。
出力¶
この関数は、以下に説明するプロパティを持つ JSON オブジェクトを返します。
プロパティ |
説明 |
---|---|
|
テーブルの名前。 |
|
テーブルまたはテーブル内の列に検索最適化プロパティが設定されている場合は |
|
テーブルまたはテーブル内の列に検索最適化を追加するための予測コストを説明する、オブジェクトの配列。 |
costPositions
配列の各オブジェクトは、異なるタイプのコスト見積もりを表します。
...
"costPositions" : [
{
"name" : "BuildCosts",
...
}, {
"name" : "StorageCosts",
...
}, {
"name" : "Benefit",
...
}, {
"name" : "MaintenanceCosts",
...
}
]
...
name
プロパティは、オブジェクトが表すコストのタイプを識別します。 name
は次のいずれかです。
|
説明 |
---|---|
|
このオブジェクトは、テーブルの検索アクセスパスを構築するための予測コストを記述します。検索最適化がすでにテーブルまたは指定された列に追加されている場合、このオブジェクトにはコスト情報が含まれません。 |
|
このオブジェクトは、テーブルの検索アクセスパスに必要なストレージ容量の予測値(単位: TB)を説明します。 |
|
このオブジェクトは、テーブルで検索最適化が有効になっている場合にのみ表示されます。現時点では情報は含まれていません。 |
|
このオブジェクトは、行が挿入、削除、または変更されたときにテーブルの検索アクセスパスを維持するための予測コストを説明します。テーブルが最近作成された場合は、コスト情報は報告されません。 |
costPositions
配列の各オブジェクトは、次のプロパティを持つことができます。
プロパティ |
説明 |
---|---|
|
このオブジェクトが表すコスト情報のタイプを識別する 名前。 |
|
次のプロパティの観点から予測コストを説明するオブジェクト。 |
value |
予測コストの金額。 |
unit |
コストの測定単位(例:コンピューティングコストの「クレジット」、ストレージコストの「TB」)。 |
perTimeUnit |
メンテナンスコストの場合、見積もりコストがカバーする時間の単位(たとえば、月あたりのコストの |
|
複数の方法が利用可能な場合、コストの見積もりに使用される方法。 |
|
推定コストに関する追加情報。 |
使用上の注意¶
テーブルまたはテーブル内の列で検索最適化が有効になっている場合、
searchOptimizationEnabled
プロパティはtrue
になります。構築コストの場合、この関数は、指定されたテーブルにあるデータのサンプルに対する検索アクセスパスの構築に基づいた概算を返します。
メンテナンスコストの場合、この関数は、テーブルに加えられた最近の変更(時間の経過に伴うバイトの変更)に基づいて見積もります。
関数を呼び出すには、使用中のウェアハウスが必要です。現在使用中のウェアハウスがない場合、関数は次のエラーを報告します。
No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command.
ウェアハウスのサイズ はこの関数のパフォーマンスに影響しないため、XSサイズのウェアハウスを使用できます。
関数はウェアハウスを使用するため、関数のウェアハウスの使用に対して請求があります。
この機能は、完了するまでに20秒から10分の範囲で時間のかかる場合があります。ウェアハウスを大きくしても、実行速度が速くなるわけではありません。
例¶
次の例は、テーブルに検索最適化を追加する場合の推定コストを示しています。
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_without_search_opt') AS estimate_for_table_without_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_TABLE_WITHOUT_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITHOUT_SEARCH_OPT", | | "searchOptimizationEnabled" : false, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 11.279, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.070493, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 30.296, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~11 days." | | } ] | | } | +---------------------------------------------------------------------------+
次の例は、すでに検索最適化が有効になっているテーブルに対するこの関数の出力を示しています。この場合、構築コストの情報が利用できないことがわかります。また、 Benefit
プロパティも含まれています(ただし、情報は含まれていません)。
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_with_search_opt') AS estimate_for_table_with_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_TABLE_WITH_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITH_SEARCH_OPT", | | "searchOptimizationEnabled" : true, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "computationMethod" : "NotAvailable", | | "comment" : "Search optimization is already enabled." | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.052048, | | "unit" : "TB" | | }, | | "computationMethod" : "Measured" | | }, { | | "name" : "Benefit", | | "computationMethod" : "NotAvailable", | | "comment" : "Currently not supported." | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 30.248, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "EstimatedUpperBound", | | "comment" : "Estimated from historic change rate over last ~11 days." | | } ] | | } | +---------------------------------------------------------------------------+
次の例は、 EQUALITY 検索メソッドを使用してテーブルの特定の列3つに対する検索最適化を推定するこの関数の出力を示しています(つまり、推定はこれらの列の等価比較に対してのみ検索最適化を有効にするためのものです)。テーブルでもそのテーブル内の列でも、いかなる種類の検索最適化もまだ有効になっていません。
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_without_search_opt', 'EQUALITY(C1, C2, C3)') AS estimate_for_columns_without_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_COLUMNS_WITHOUT_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITHOUT_SEARCH_OPT", | | "searchOptimizationEnabled" : false, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 10.527, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.040323, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 22.821, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~7 days." | | } ] | | } | +---------------------------------------------------------------------------+
指定した列のいずれかの検索最適化がすでに有効になっているテーブルで同様のクエリを実行すると、出力には、まだ有効になっていない指定の列に検索最適化を追加することを含む構築コストの推定が含まれます。これは、検索最適化がすでに有効になっているテーブル全体で検索最適化を推定していた前の例とは異なります。この例では、実行する構築作業がないため、構築コストの推定がありませんでした。
ここでのストレージの推定には、検索最適化がすでに有効になっている列の実際の検索アクセスパスサイズのみが含まれます。
メンテナンスの推定は、検索最適化がすでに有効になっているかどうかに関係なく、指定されたすべての列を対象としています。
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_with_search_opt', 'EQUALITY(C1, C2, C3)') AS estimate_for_columns_with_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_COLUMNS_WITH_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITH_SEARCH_OPT", | | "searchOptimizationEnabled" : true, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 8.331, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.040323, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "Benefit", | | "computationMethod" : "NotAvailable", | | "comment" : "Currently not supported." | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 22.821, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~7 days." | | } ] | | } | +---------------------------------------------------------------------------+