开发手册 欢迎您!
软件开发者资料库

Teradata - 解释

Teradata说明 - 从简单和简单的步骤学习Teradata,从基本到高级概念,包括简介,安装,架构,关系概念,数据类型,表格,数据操作,SELECT语句,逻辑和条件运算符,SET运算符,字符串处理,日期/时间函数,内置函数,聚合函数,CASE和COALESCE,主索引,连接,子查询,表类型,空间概念,二级索引,统计,压缩,解释,哈希算法,JOIN索引,视图,宏,存储过程,JOIN策略,分区主索引,OLAP功能,数据保护,用户管理,性能调整,FastLoad,MultiLoad,FastExport,BTEQ。

EXPLAIN命令以英语返回解析引擎的执行计划.除了另一个EXPLAIN命令外,它可以与任何SQL语句一起使用.当查询前面有EXPLAIN命令时,解析引擎的执行计划将返回给用户而不是AMP.

EXPLAIN示例

考虑具有以下定义的表Employee.

CREATE SET TABLE EMPLOYEE,FALLBACK (    EmployeeNo INTEGER,    FirstName VARCHAR(30),    LastName VARCHAR(30),   DOB DATE FORMAT 'YYYY-MM-DD',    JoinedDate DATE FORMAT 'YYYY-MM-DD',    DepartmentNo BYTEINT ) UNIQUE PRIMARY INDEX ( EmployeeNo );

下面给出了一些EXPLAIN计划示例.

全表扫描(FTS)

如果SELECT语句中未指定任何条件,则优化器可以选择使用全表扫描,其中访问表的每一行.

示例

以下是优化程序可以选择FTS的示例查询.

EXPLAIN SELECT * FROM employee;

执行上述查询时,会产生以下输出.可以看出,优化器选择访问AMP中的所有AMP和所有行.

  1)首先,我们锁定一个不同的TDUSER.伪表"用于读取 RowHash以防止TDUSER.employee的全局死锁.  2)接下来,我们锁定TDUSER.employee进行读取.  3)我们通过全行扫描从TDUSER.employee执行全AMPs RETRIEVE步骤,没有残留条件进入Spool 1 (group_amps),这是在本地构建的AMP. 假脱机1的大小估计为低置信度为2行(116字节). 此步骤的预计时间为0.03秒.  4)最后,我们向处理请求的所有涉及的AMP发送END TRANSACTION步骤.  → 作为语句1的结果,假脱机1的内容被发送回用户.总估计时间是0.03秒.

唯一主索引

当使用唯一主索引访问行时,它是一个AMP操作.

EXPLAIN SELECT * FROM employee WHERE EmployeeNo = 101;

执行上述查询时,会产生以下输出.可以看出,它是单AMP检索,优化器使用唯一的主索引来访问该行.

  1)首先,我们从TDUSER.employee执行单一AMP RETRIEVE步骤,以的方式获得唯一主索引"TDUSER.employee.EmployeeNo = 101",没有剩余条件.此步骤的预计时间为 0.01秒.  → 作为语句1的结果,该行直接发送回用户.总估计时间为0.01秒.

唯一二级索引

使用唯一二级索引访问行时,它是两个放大器操作.

示例

考虑具有以下定义的表Salary.

CREATE SET TABLE SALARY,FALLBACK (    EmployeeNo INTEGER,    Gross INTEGER,    Deduction INTEGER,    NetPay INTEGER )PRIMARY INDEX ( EmployeeNo ) UNIQUE INDEX (EmployeeNo);

考虑以下SELECT语句.

EXPLAIN SELECT * FROM Salary WHERE EmployeeNo = 101;

执行上述查询时,会产生以下输出.可以看出,优化器使用唯一的二级索引检索两个放大器操作中的行.

  1)首先,我们进行双AMP检索从TDUSER.Salary 开始,通过唯一索引#4"TDUSER.Salary.EmployeeNo =  101",没有剩余条件.这个步骤的估计时间是0.01秒.  → 作为语句1的结果,该行直接发送回用户.总估计时间为0.01秒.

附加条款

以下是EXPLAIN计划中常见的术语列表.

...(上次使用)...

不再需要假脱机文件在此步骤完成时释放.

...没有剩余条件......

所有适用的条件都适用于行.

... END TRANSACTION ...

已释放事务锁定,并且已提交更改.

...消除重复行...

重复行仅存在于假脱机文件中,而不是设置表.执行DISTINCT操作.

...通过遍历索引#n仅提取行ID ...

构建一个假脱机文件,其中包含在二级索引中找到的行ID(索引编号为#n)

...我们这样做SMS(设置操作步骤)...

使用UNION,MINUS或INTERSECT运算符组合行.

...通过哈希码重新分配给所有AMP.

重新分发准备加入的数据.

...在所有AMP上重复.

从较小的表中复制数据(就SPOOL而言)以准备连接.

...(one_AMP)或(group_AMPs)

表示将使用一个AMP或AMP子集代替所有AMP.