由于 UltraLite 简要计划是如何访问查询的文本概括,您需要了解表的连接或扫描操作是如何实现的。
对于扫描操作 用单个操作数表示,只适用于单个表并且使用索引。表名和索引名以圆括号 ( (, ) ) 方式显示,接在操作名后。
对于其它操作 用一个或多个操作数表示,还可以是自身中的计划和自身的计划。在 UltraLite 中,这些操作数是由逗号分隔的列表,包含在方括号 ( [ ] ) 内。
下表列出了 UltraLite 支持的操作。
操作 | 说明 |
---|---|
count(*) |
计算表中的行数。 |
distinct[ plan ] |
执行查询的 DISTINCT 方面,以比较并消除重复行。它可用于在基础计划对行进行排序时消除重复的连续行。如果两个连续的行匹配,只会将第一行添加到结果集中。 |
dummy |
不执行任何操作。它只在两种情况中出现:
|
filter[ plan ] |
执行由基础计划提供的各行的搜索条件。只有值为 true 的行才会作为结果集的一部分发送。 |
group-by[ plan ] |
创建 GROUP BY 结果的集合,以便对分组数据的多行进行排序。行按照出现的顺序列出,并且通过比较连续行进行分组。 |
group-single[ plan ] |
创建 GROUP BY 结果的集合,但是只在知道将会返回单行时。 |
+keyset[ plan ] |
记录用于创建临时表行的那些行,以便 UltraLite 可以更新原始行。如果不想更新那些行,那么应在查询中使用 FOR READ ONLY 子句来消除此操作。 |
index-scan( table-name, index-name ) |
只读取表的一部分;索引用于查找起始行。 |
join[ plan, plan ] |
在两个计划之间进行内连接。 |
lojoin[ plan, plan ] |
在两个计划之间进行左外连接。 |
like-scan( table-name, index-name ) |
只读表的一部分;索引用于通过模式匹配查找起始行。 |
rowlimit[ plan ] |
对传播行执行行限制操作。行限制是通过 SELECT 语句的 TOP n 或 FIRST 子句来设置的。 |
scan( table-name, index-name ) |
按照索引指示的顺序读取整个表。 |
sub-query[ plan ] |
标记子查询的起始。 |
temp[ plan ] |
从基础计划中的行创建临时表。当必须对基础行进行排序而又找不到索引来完成此排序时,UltraLite 会使用临时表。 可以添加一个索引来消除对临时表的需求。但是,使用的每个附加索引都会增加在应用索引的表插入或同步行所需的持续时间。 |
union-all[ plan, ..., plan ] |
对在基础计划中生成的行执行 UNION ALL 操作。 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |