这是关于sybase的查询计划以及如何根据查询计划形成树
1) 这个查询计划如何形成正确的树? 从emit.Insert开始是Emit的子元素,Restrict是Insert的子元素,依此类推。它与解释不符。
2)我是否可以了解实际处理过程以及中期结果如何实现最终结果?什么是节点可以拥有的最大子节点数?
抱歉这么久的例子。
文本删除操作符
另一种类型的查询计划,其中DML运算符可以具有多个 child运算符是alter table drop textcol命令,其中textcol是名称 数据类型为text,image或unitext的列的数据。以下查询和 查询计划是使用文本删除操作符的示例:
1> use tempdb
1> create table t1 (c1 int, c2 text, c3 text)
1> set showplan on
1> alter table t1 drop c2
QUERY PLAN FOR STATEMENT 1 (at line 1).
Optimized using the Abstract Plan in the PLAN clause.
5 operator(s) under root
The type of query is ALTER TABLE.
ROOT:EMIT Operator
|INSERT Operator
| The update mode is direct.
|
| |RESTRICT Operator
| |
| | |SCAN Operator
| | | FROM TABLE
| | | t1
| | | Table Scan.
| | | Forward Scan.
| | | Positioning at start of table.
| | | Using I/O Size 2 Kbytes for data pages.
| | | With LRU Buffer Replacement Strategy for data pages.
| |TEXT DELETE Operator
| | The update mode is direct.
| |
| | |SCAN Operator
| | | FROM TABLE
| | | t1
| | | Table Scan.
| | | Forward Scan.
| | | Positioning at start of table.
| | | Using I/O Size 2 Kbytes for data pages.
| | | With LRU Buffer Replacement Strategy for data pages.
| TO TABLE
| #syb__altab
| Using I/O Size 2 Kbytes for data pages.
The below is the explantion
说明:
使用alter table命令删除t1中的两个文本列之一
showplan输出看起来像是一个select into查询计划,因为alter table
内部生成一个select into查询计划。
插入操作符在其左侧调用
子操作符,扫描t1,读取t1的行,并用。构建新行
只有c1和c3列插入到#syb_altab中。
当所有的新行
已插入#syb_altab,插入操作符调用其右子,
文本删除操作符,删除c2列的文本页链
已从t1中删除。
后处理替换了t1的原始页面
使用#syb_altab来完成alter table命令。