下面是我正在测试的表的create语句,它实际上来自凤凰城
CREATE TABLE Test.Employee(
Region VARCHAR NOT NULL,
LocalID VARCHAR NOT NULL,
Name VARCHAR,
StartDate DATE,
CONSTRAINT pk PRIMARY KEY(Region, LocalID))
SALT_BUCKETS = 1;
CREATE TABLE Test.Patent (
PatentID VARCHAR NOT NULL,
Region VARCHAR,
LocalID VARCHAR,
Title VARCHAR,
Category VARCHAR,
FileDate DATE,
CONSTRAINT pk PRIMARY KEY (PatentID))
SALT_BUCKETS=1;下面是简单的联接查询:
SELECT E.Name, E.Region, P.PCount
FROM Test.Employee AS E
JOIN
(SELECT Region, LocalID, count(*) AS PCount
FROM Test.Patent
WHERE FileDate >= to_date('2000-01-01')
GROUP BY Region, LocalID) AS P
ON E.Region = P.Region AND E.LocalID = P.LocalID很好地解释工作并给出结果:
PLAN
CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.EMPLOYEE
PARALLEL INNER-JOIN TABLE 0
DYNAMIC SERVER FILTER BY (E.REGION, E.LOCALID) IN ((P.REGION, P.LOCALID))
CLIENT MERGE SORT
CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.PATENT
SERVER FILTER BY FILEDATE >= DATE '2000-01-01 00:00:00.000'
SERVER AGGREGATE INTO DISTINCT ROWS BY [REGION, LOCALID]但是当我运行它时,我会得到这样的错误:
Encountered exception in sub plan [0] execution.其他详情:
我现在被这个问题困住了。
谢谢!
这样做是可行的:
SELECT /*+ USE_SORT_MERGE_JOIN */ E.Name, E.Region, P.PCount
FROM Test.Employee AS E
JOIN
(SELECT Region, LocalID, count(*) AS PCount
FROM Test.Patent
WHERE FileDate >= to_date('2000-01-01')
GROUP BY Region, LocalID) AS P
ON E.Region = P.Region AND E.LocalID = P.LocalID因此,当强制使用排序-合并连接时,查询工作正常,我假设在我的设置中存在Hash问题。还是没有答案。
发布于 2022-04-22 09:33:52
这样做是可行的:
选择/*+ USE_SORT_MERGE_JOIN / E.Name、E.Region、Test.Employee中的P.PCount作为E联接(SELECT Region、LocalID、count() AS PCount FROM FileDate >= to_date('2000-01-01')按区域分组,LocalID)作为P ON E.Region = P.Region和E.LocalID = P.LocalID,因此当强制使用排序-合并连接时,查询工作正常,我假设在我的设置中存在Hash联接问题。还是没有答案。
https://stackoverflow.com/questions/40100813
复制相似问题