我希望获得不在同一个表的其他列和另外两个表的其他列中的所有索引
我的查询工作正常
有没有其他方法可以更快地获得相同的结果?
SELECT Index
FROM temptable A
WHERE NOT EXISTS(select 1
from temptable B
where A.Index = B.Index2)
AND NOT EXISTS (SELECT 1
FROM temptable2 B
WHERE A.Index = B.INDEX)
AND NOT EXISTS (SELECT 1
FROM temptable3 B
WHERE A.Index = B.INDEX)
AND type = 'G';
答案 0 :(得分:0)
看看这个example
用左连接替换不存在的位置将为您提供更好的性能
答案 1 :(得分:0)
我不知道这是否会更快地获取数据,但它将取决于在索引列上创建的索引。如果索引列是主键,那么它肯定会INDEX FAST FULL SCAN
即使对于唯一/非唯一索引它会返回这样的结果。
SELECT Index
FROM temptable A
WHERE type = 'G';
MINUS
(select index2
from temptable B
union
SELECT index
FROM temptable2 B
union
SELECT index
FROM temptable3 B
) ;
答案 2 :(得分:0)
你可以试试这个:我没有测试过,因为我没有资源
SELECT
TABLE1.INDEX
FROM
(SELECT INDEX FROM TEMPTABLE WHERE TYPE = 'G') TABLE1
LEFT OUTER JOIN TEMPTABLE TT1 ON TABLE1.INDEX = TT1.INDEX2
LEFT OUTER JOIN TEMPTABLE2 TT2 ON TABLE1.INDEX = TT2.INDEX
LEFT OUTER JOIN TEMPTABLE3 TT3 ON TABLE1.INDEX = TT3.INDEX
WHERE
TT2.COLUMNB IS NULL;
Add indexes on the `columns TEMPTABLE.INDEX, TEMPTABLE.INDEX2, TEMPTABLE2.INDEX, TEMPTABLE3.INDEX`