使用连接重写SQL查询(或以其他方式使其更高效)

时间:2015-09-07 04:08:26

标签: sql sqlite join

是否可以使用JOIN重写以下SQL查询或以其他方式提高效率? 我可能正在使用SQLite(我可以连接到几个不同的数据库),这意味着我不能使用RIGHT JOIN(s)。下面查询中的省略号(...)表示我可以在那里拥有多个UNION。

我以编程方式构造此查询,因为在我的情况下没有其他方法。我只是试图了解如何重写它以提高效率。有任何想法吗 ? 提前谢谢。

SELECT serial_nr, name, cert_type FROM certificates WHERE (cert_type<3 AND
serial_nr IN
(
    SELECT DISTINCT serial_nr FROM certificates WHERE (cert_type<3 AND (name LIKE 'george%' ))
    UNION
    SELECT DISTINCT serial_nr FROM ip_addresses WHERE ((address LIKE '192.168%' ))
    ....
));

1 个答案:

答案 0 :(得分:1)

尝试这样的事情;

SELECT serial_nr, name, cert_type FROM certificates A 
inner join certificates B on A.serial_nr=B.serial_nr and B.name like'george%'
inner join ip_address C on A.serial_nr=C.serial_nr and C.Address like '192.168%'
...
WHERE A.cert_type<3