- 类别:
:doc:`/sql-reference/functions-system`(系统信息)
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
为 列配置 指定的 搜索方法和目标,类似于 ON 子句中指定的内容,该子句属于 ALTER TABLE ...:ref:ADD SEARCH OPTIMIZATION <label-alter_table_searchoptimizationaction_add> 命令对整个表或特定列启用搜索优化。
整个实参必须放在单引号内。在此字符串中,根据需要 在列名称周围使用双引号。
输出¶
该函数返回一个 JSON 对象,其属性如下所述:
属性 |
描述 |
---|---|
|
表的名称。 |
|
如果为表或表中的任何列启用了搜索优化,则为 |
|
描述向表或其列添加搜索优化的预测成本的对象数组。 |
costPositions
数组中的每个对象都表示不同类型的成本估算:
...
"costPositions" : [
{
"name" : "BuildCosts",
...
}, {
"name" : "StorageCosts",
...
}, {
"name" : "Benefit",
...
}, {
"name" : "MaintenanceCosts",
...
}
]
...
name
属性标识对象所表示的成本类型。name
可以是以下项之一:
|
描述 |
---|---|
|
此对象描述为表构建搜索访问路径的预测成本。 如果已将搜索优化添加到表或所有指定列中,则此对象不包含成本信息。 |
|
此对象描述表的搜索访问路径所需的预测存储空间量(以 TB 为单位)。 |
|
仅当表启用了搜索优化时,才会显示此对象。此对象目前不包含信息。 |
|
此对象描述在插入、删除或修改行时维护表的搜索访问路径的预测成本。如果表是最近创建的,则不会报告成本信息。 |
costPositions
数组中的每个对象都可以具有以下属性:
属性 |
描述 |
---|---|
|
标识此对象表示的成本信息类型的 名称。 |
|
根据以下属性描述预测成本的对象: |
value |
预测成本的金额。 |
unit |
成本的计量单位(例如,“Credit”表示计算成本,“TB”表示存储成本等)。 |
perTimeUnit |
对于维护成本,估算成本涵盖的时间单位(例如, |
|
用于估算成本的方法(如果有多种方法可用)。 |
|
有关估算成本的其他信息。 |
使用说明¶
当表或表中的任何列启用了搜索优化时,
searchOptimizationEnabled
属性为true
。对于构建成本,在为指定表中的数据样本构建搜索访问路径的基础上,此函数返回近似值。
对于维护成本,此函数基于最近对表所做的更改(随时间推移的字节更改)进行估算。
为了调用该函数,必须有一个正在使用的仓库。如果当前没有正在使用的仓库,该函数将报告以下错误:
No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command.
仓库大小 对此函数的性能没有影响,因此您可以使用 X-Small 仓库。
由于该函数使用仓库,因此需要为此函数使用仓库付费。
该函数可能需要 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 搜索方法估算表的三个特定列的搜索优化(即,估算仅用于为这些列上的相等性比较启用搜索优化)的输出。表及其任何列均未启用任何类型的搜索优化。
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." | | } ] | | } | +---------------------------------------------------------------------------+