Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (E-O)

 

ESTIMATE_SOURCE 函数 [杂类]

提供查询优化程序使用的选择性估计源。

语法
ESTIMATE_SOURCE( 
column-name
[, value  
[, relation-string ] ] 
)
参数
  • column-name   要调查的列的名称。

  • value   要与列进行比较的值。缺省值为 NULL。

  • relation-string   用于比较的比较运算符(用单引号括起来)。此参数可接受的值为:'=' , '>' , '<' , '>=' , '<=' , '<>' , '!=' , '!<' '='、'>'、'<'、'>='、'<='、'<>'、'!='、'!<' 和 '!>'。缺省值为 '='。

返回值

选择性估计源,可以是下列值之一:

  • 统计   当您指定了一个值,并且有可用来估计列中值的平均选择性的存储统计时,使用此来源。仅当值的选择性是统计中存储的有效数字时,统计才可用。目前,如果值至少出现在 1% 的行中,即视其为有效。

  • 列   类似于 Statistics,不同的是值的选择性出现在不到 1% 的行中。这种情况下,使用的选择性是已在统计中存储的、出现在不到 1% 的行中的所有值的平均值。

  • Guess   当没有相关的索引可以使用,并且没有为列收集统计时,将返回此来源。这种情况下,将使用内置推测。

  • Column-column   当使用的估计是连接的选择性时,返回此来源。这种情况下,估计的计算方法是:连接结果集中的行数与两个表笛卡尔乘积中的行数的商。

  • 索引   当没有可用于估计选择性的统计,但存在可供探测以估计选择性的索引时,使用此来源。

  • 用户   当存在用户提供的估计,并且 user_estimates 数据库选项未设置为 Disabled 时,返回此来源。

    有关详细信息,请参见user_estimates 选项 [数据库]

  • Computed   当优化程序根据其它信息计算统计时,返回此来源。例如,SQL Anywhere 不维护多个列的统计,因此,如果想要得到多个列等式(如 x=5 和 y=10)的估计,并且存在列 x 和 y 的统计,则优化程序会通过将每一列的估计选择性相乘来创建估计。

  • 始终   当测试根据定义为真时,使用此来源。例如,如果值是 1=1。

  • Combined   当优化程序使用上述多个来源并且合并使用时,使用此来源。

  • Bounded   它可以限定其它来源之一。这表示 SQL Anywhere 已对估计设置了上限和/或下限。优化程序这样做是为了将估计保持在逻辑范围内。例如,它确保估计不大于 100%,或选择性不小于一行。

注释

如果 value 为 NULL,则关系字符串 '=' 和 '!=' 将分别被解释为 IS NULL 和 IS NOT NULL 条件。

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下语句返回值 Index,这表示查询优化程序已探测索引来估计选择性。

SELECT FIRST ESTIMATE_SOURCE( EmployeeID, 200, '>' )
   FROM Employees
   ORDER BY 1;