我有一个表 A,其中包含大约 50000 条记录,表 B 也包含 50000 条记录。 样本数据:
A B
1 1
2 2
3 null
4 null
我想查找表 A 中存在但 B 表中不存在的记录 3、4。 我正在使用
select id from A where id NOT IN(select id from B)
我也尝试过NOT Exist,但是由于记录数量非常多,所以还是需要很多时间。
select id from A where NOT Exists(select id from B and B.id = A.id)
左外连接无法用于查找丢失的记录,因为表 B 中不存在 id。
有什么方法可以让 Sybase 本身的查询运行得更快吗? 或者将数据库转移到 MongoDB 是解决方案?
最佳答案
我不确定您为什么不准备 LEFT JOIN,我尝试使用 LEFT JOIN
它会返回您的预期结果。
使用给定数据执行示例:
DECLARE @TableA TABLE (Id INT);
DECLARE @TableB TABLE (Id INT);
INSERT INTO @TableA (Id) VALUES (1), (2), (3), (4);
INSERT INTO @TableB (Id) VALUES (1), (2), (NULL), (NULL);
SELECT T1.Id
FROM @TableA T1
LEFT JOIN @TableB T2 ON T2.Id = T1.Id
WHERE T2.Id IS NULL
结果
3
4
关于sql - 不存在或不存在大型数据 Sybase 查询速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37584127/