使用搜索优化表

搜索优化通常对用户公开透明。查询的工作原理是一样的,只是有些查询速度更快。但是,请务必注意其他表操作对搜索优化服务可能产生的影响,或是搜索优化服务对其他表操作可能产生的影响。

修改表

如果更改了列的默认值,搜索访问路径会失效。

要在搜索访问路径失效后再次使用搜索优化,必须 弃用 SEARCH OPTIMIZATION 属性将 SEARCH OPTIMIZATION 属性 添加回表中。

如果添加、弃用或重命名列,搜索访问路径仍然有效:

  • 如果为整个表启用了搜索优化,而没有指定特定列,那么在表中添加列时,新列会自动添加到搜索访问路径中。但是,如果在为列启用搜索优化时使用了 ON 子句,则不会自动添加新列。

  • 从表中弃用列时,弃用的列将自动从搜索访问路径中移除。

  • 重新命名列不需要更改搜索访问路径。

如果弃用,则也会删除 SEARCH OPTIMIZATION 属性和搜索访问路径。请注意:

  • 取消弃用表后,搜索优化会立即重新成为表的属性。

  • 弃用表后,搜索访问路径的数据保留期与表中的数据保留期相同。

如果从表中 弃用 SEARCH OPTIMIZATION 属性,就会移除搜索访问路径。将 SEARCH OPTIMIZATION 属性添加回表 时,维护服务需要重新创建搜索访问路径。(无法取消弃用该属性。)

克隆表、架构或数据库

如果克隆表、架构或数据库,还会克隆每个表的 SEARCH OPTIMIZATION 属性和搜索访问路径。(克隆表、架构或数据库会为每个表及其相应的搜索访问路径创建 零拷贝克隆。)

请注意,如果使用 CREATE TABLE ... LIKE 创建一个新空表(具有与原始表相同的列),则 SEARCH OPTIMIZATION 属性不会复制到新表。

使用辅助数据库中的表(支持 Database Replication)

如果主数据库中的表启用了 SEARCH OPTIMIZATION 属性,则该属性将复制到辅助数据库中的相应表。

辅助数据库中的搜索访问路径不会复制,而是会自动重建。请注意,此过程会产生与 搜索优化成本估算和管理 中所述相同类型的成本。

共享表

数据提供商可以使用 Secure Data Sharing 共享启用了搜索优化的表。

查询共享表时,数据使用者可以从搜索优化服务带来性能改进中受益。

掩码策略和行访问策略

搜索优化服务与使用掩码策略和行访问策略的表完全兼容。

但是,启用搜索优化后,因掩码策略或行访问策略而无法查看值的用户可能可以更确定地推断该值是否存在。无论是咨进行搜察优化,查询廷迟的差异都可以提供有关是否存在受策略限制的数据的提示,这可能会构成安全问题,具体取决于数据的敏感性。这种效果可以通过搜索优化来放大,因为它可以使不返回结果的查询变得更快。

例如,假设行访问策略阻止用户访问带有 country = 'US' 的行,但数据不包括带有 country = 'US' 的行。现在,假设为 country 列启用了搜索优化,并且用户使用 WHERE country = 'US' 运行查询。查询按预期返回空结果,但使用搜索优化的查询的运行速度可能比不使用优化查询时快。在这种情况下,用户可以根据运行查询所花费的时间,更容易地推断出数据不包含任何 country = 'US' 行。

语言: 中文