You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Teradata中连接条件含非PI列时,主键索引(PI)能否被利用?

在Teradata中,连接条件同时包含主键索引(PI)列与非PI列时,PI是否会被系统利用?

示例场景

-- Table A
CREATE TABLE Orders (
    OrderID INT,
    CustomerID INT,
    Region VARCHAR(20)
) PRIMARY INDEX (CustomerID);

-- Table B
CREATE TABLE Customers (
    CustomerID INT,
    Region VARCHAR(20),
    Name VARCHAR(50)
) PRIMARY INDEX (CustomerID);

查询语句:

SELECT *
FROM Orders o
JOIN Customers c
ON o.CustomerID = c.CustomerID    -- c.CustomerID 是PI列
AND o.Region = c.Region           -- c.Region 非PI列

答案:会被利用

Teradata优化器会优先识别并利用PI列的等值连接条件,即使连接中同时存在非PI列的条件,核心逻辑如下:

  • PI的核心作用是控制数据在AMP节点的分布,当两张表的PI为同一列(如示例中的CustomerID)时,相同CustomerID的记录会被哈希分配到同一个AMP上。优化器会直接在每个AMP节点内完成CustomerID相等的记录匹配,彻底避免跨AMP的数据重分布——这是Teradata连接优化的核心手段之一,能大幅降低执行开销。
  • 非PI列的连接条件(o.Region = c.Region)会作为二次过滤条件,在AMP本地完成PI匹配后,进一步筛选符合Region相等的记录,不会干扰PI的利用逻辑。

执行逻辑示例

  1. 由于Orders和Customers的PI都是CustomerID,相同CustomerID的所有记录都存储在同一个AMP节点上。
  2. 优化器在每个AMP内,先匹配Orders与Customers中CustomerID相等的记录对。
  3. 对这些匹配的记录对,再过滤出Region值相等的结果,最终汇总所有AMP的结果返回。

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:05:54