Teradata 次索引2024 年 8 月 29 日 | 阅读 3 分钟 Teradata数据库表并非总是需要二级索引,但它们通常可以提高系统性能。 二级索引(SI)是一种替代的数据访问路径。它允许访问数据,而无需进行全表扫描。 可以使用CREATE TABLE和CREATE INDEX语句显式创建二级索引。Teradata数据库可以隐式创建唯一的二级索引。 例如,当我们使用指定主索引的CREATE TABLE语句时,Teradata数据库会在我们使用PRIMARY KEY或UNIQUE约束指定的列集上隐式创建唯一的二级索引。 二级索引存储在单独的子表中,这需要额外的磁盘空间和维护,这些由系统自动处理。这些表构建在所有AMP中。 这些子表包含索引行,因此我们需要添加另一组行,每次都需要更新。 每当使用FALLBACK定义表时,二级索引子表也会被复制。二级索引不参与数据分布。 二级索引子表的目的是通过行ID返回基本表中的实际行。 二级索引规则以下是一些重要的二级索引规则 规则1:二级索引是可选的。 二级索引类型Teradata中有两种类型的二级索引
唯一二级索引(USI)唯一二级索引允许为定义为USI的列使用唯一值。 唯一二级索引(USI)有两个目的。
创建USI时,Teradata会立即在每个AMP上构建一个二级索引子表。 然后,每个AMP将对基本表中每行的二级索引值进行哈希处理。 语法 以下是创建唯一二级索引的语法 示例 首先创建一个包含以下记录的Employee表,例如
以下示例在employee表的Emp_Id列上创建USI。 Emp_Id哈希的输出将利用哈希映射指向特定的AMP,该AMP将保存二级索引值的二级索引子表行。 这意味着子表行将保存基本表Row-ID,然后Teradata将立即找到基本行。 非唯一二级索引(NUSI)非唯一二级索引(NUSI)允许为定义为NUSI的列使用重复值。 通常指定非唯一二级索引是为了防止全表扫描,在这种扫描中,会读取表的每一行。 USI始终是Two-AMP操作,因此它几乎与主索引一样快,但NUSI是All-AMP操作,但不是全表扫描。 创建NUSI时,Teradata会立即在每个AMP上构建一个二级索引子表。 每个AMP将仅保存其基本表中行的二级索引值。一个表最多可以有32个二级索引。 语法 以下是创建非唯一二级索引的通用语法 示例 以下示例在employee表的First_Name列上创建NUSI。 在上面的示例中,每个AMP在其AMP(AMP本地)上的基本表中保存所有员工行的name列。 每个AMP本地名称都将具有基本表Row-ID(指针),因此AMP可以在需要时快速检索它。 如果AMP包含重复的名字,则仅为该名称构建一个包含多个Base Row-ID的子表行。 下一个主题Teradata哈希算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。