sql - 不存在或不存在大型数据 Sybase 查询速度非常慢

标签 sql sybase

我有一个表 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/

相关文章:

java - JDBCPreparedStatement 忽略 $$ ... $$ 查询 block 中的 ' ? '

mysql - Sybase =* 连接到 mysql 右外连接

t-sql - 如何在 Sybase 中杀死不守规矩的 spid?

mysql - 在MySQL中将2个不同的表合并为1个

c# - EF5 db.Database.SqlQuery 映射返回的对象

MySQL 5.6.13 无法正确执行创建表

postgresql - 使用 Postgres COPY FROM 时如何转换十六进制字符?

sql - “where-in”子句中的强制条件匹配

command-line - 无法在 cygwin 上运行 isql

DB写操作中的Java并发