在许多基于查询的查询的基础上,为了满足一个条件,往往需要加入另一个表中。在这种情况下,使用存在(或不存在)通常会提高查询效率。在子查询中,在条款的不将执行一个内部的排序和合并。在任何的情况下,不在是最低效的(因为它执行的子查询表的全表遍历)。为了避免使用不在,我们可以把它改写为外部连接(外部连接)或不存在。

作为

我要查询的冗余数据在sendorder表(没有数据连接reg_person或现场)

SQL =,选择sendorder.id,sendorder.reads,sendorder.addtime从sendorder哪里sendorder.person_id不(不),对与错。
程序执行时间:40109.38毫秒

SQL =选择sendorder.id,sendorder.reads sendorder.addtime,从sendorder哪里不存在(选择ID从reg_person哪里reg_person。user_id = sendorder.person_id没有(选择)或存在的身份从工地,工地。ID = sendorder.worksite_id顺序sendorder.addtime DESC)
程序执行时间:8531.25毫秒

很明显,使用不存在的效率要高得多。