下面的查询检索表1中的所有行(x:text,y:text),其中列x中的文本还没有出现在表2中。x
给定:
- 我们使用的是MariaDB;
- 列x在两个表中都被定义为不可空文本;
- 没有索引(应用程序是动态的,我们不想使用索引);
- 我们还需要检索列y(EXCEPT不起作用)。
执行计划总是将内部查询显示为依赖子查询,性能非常差。
SELECT DISTINCT(table1.x), table1.y
FROM table1
WHERE table1.x IS NOT NULL
AND table1.x NOT IN (
SELECT DISTINCT table2.x from table2
WHERE table2.x IS NOT NULL
)
你能给我一些更好的解决方案吗?
谢谢
1条答案
按热度按时间xpcnnkqh1#
看看以下内容是否更适合您:
很明显,如果列不允许NULL,则不需要检查NULL。可能优化器会忽略这一点。