使用 Snowsight 监控搜索优化¶
启用搜索优化服务后,您可以使用 Snowsight 来监控有关查询如何使用该服务的统计信息。您还可以使用 Snowsight 来确定查询未使用搜索优化服务的原因。
监控查询的搜索优化使用情况¶
当查询使用搜索优化服务时,查询配置文件 包括以下内容:
Search Optimization Access 节点 – 查询计划中有专用 Search Optimization Access 节点。选择此节点可访问表格扫描信息以及特定于搜索优化的信息。
Attributes 窗格 – 该节点的此窗格包含以下内容:
完整表名 – 标识为使用搜索优化的查询而扫描的表。
搜索优化使用信部分列出了搜索优化在查询执行期间引用的表达式 IDs。每个表达式 ID 对应为表定义的搜索方法和列目标。执行以下查询以显示表达式 IDs 及其对应的方法和目标:
DESCRIBE SEARCH OPTIMIZATION ON <table_name>;
有关此命令的更多信息,请参阅 DESCRIBE SEARCH OPTIMIZATION。
Statistics 窗格 – 节点的此窗格包含以下指标:
Bytes scanned – 在执行表扫描操作期间读取的数据总量。
Partitions scanned – 实际扫描的微分区的数量。
Partitions total – 表的微分区总数。
Partitions pruned by search optimization – 搜索优化从对应表扫描中实际排除的微分区数量。
下图显示了 Statistics 窗格上指标的示例:

确定未使用搜索优化的原因¶
即使为表格配置了搜索优化,也可能不会总是使用搜索优化。如果未对查询使用搜索优化,请检查 Attributes 窗格上 Table Scan 节点的 Search Optimization Usage Info 部分。该部分显示以下其中一种说明:
当谓词不匹配时,将显示以下消息:
Search optimization service was not used because no match was found between used predicates and the search access paths added for the table.
该消息表明查询中对此表使用的谓词与为该表定义的搜索方法不兼容。您可以通过执行以下命令来查看表的优化配置:
DESCRIBE SEARCH OPTIMIZATION ON <table_name>;
有关搜索优化支持的谓词和数据类型的信息,请参阅 识别可从搜索优化中受益的查询。
当基于成本决定不使用搜索优化时,会显示以下消息:
Search optimization service was not used because the cost was higher than a table scan for this query.
此消息表明查询中使用的谓词与为表定义的搜索方法兼容,但查询优化器认为搜索优化可能不会提高查询性能。使用不同谓词或源表中不同数据的后续查询可能会采用搜索优化。
当超过谓词限制时,将显示以下消息:
Search optimization service was not used because the predicate limit was exceeded.
该消息表明谓词包含过多不同谓词。搜索优化谓词的确切数量取决于谓词类型,可能与查询中的谓词数量不完全一致。使用通配符语法的 子字符串查询 和 全文搜索查询 更有可能达到谓词限制。
下图显示了谓词不匹配消息的示例:
