我正在检查in_fmd中的一行的存在情况,并且查找的ISBN可以是ISBN参数,也可以是交叉表中另一个可能有或没有一行的ISBN。如何改进此SQL查询?
select count(*)
from in_fmd i
where (description='GN')
and (i.isbn in
(
select bwi_isbn from bw_isbn where orig_isbn = ?
union all
select cast(? as varchar) as isbn
)
)
我实际上并不关心行数,而只是至少存在一行。
这曾经是三个独立的查询,我把它压扁成一个,但我认为还有进一步改进的余地。它是PostgreSQL 8.1,如果它很重要。
作为旁注,我们不再使用此查询。 in_fmd表已被删除,我们不必再合成数据点。该查询是最快的,它不运行。 :-) – 2010-09-16 21:59:40