最近遇到一个很有特点的优化器问题,大家一起分析分析。代码如下:CREATE TABLE TEST.A
(NO INTEGER,
NAME VARCHAR(20)
);
CREATE TABLE TEST.B
(DEPT VARCHAR(20)
);
INSERT INTO TEST.A VALUES ( 1 , 'SMITH');
INSERT INTO TEST.A VALUES ( 2 , 'JACK');
INSERT INTO TEST.B VALUE...
显示全部最近遇到一个很有特点的优化器问题,大家一起分析分析。
代码如下:
CREATE TABLE TEST.A
(NO INTEGER,
NAME VARCHAR(20)
);
CREATE TABLE TEST.B
(DEPT VARCHAR(20)
);
INSERT INTO TEST.A VALUES ( 1 , 'SMITH');
INSERT INTO TEST.A VALUES ( 2 , 'JACK');
INSERT INTO TEST.B VALUES ( 'HR');
SELECT NO , NAME FROM TEST.A WHERE NAME IN ( SELECT NAME FROM TEST.B );
正常情况下,这个语句应该报错,B表中没有NAME字段。
可测试后发现会把A中所有的记录都返回。
怀疑优化器出现问题,大家可以测试一下,然后一起分析是什么问题。
收起