[英]SQL Select Count in Where Clause Performance issue
由于where子句中的select count(1)语句,我具有以下可怕的SQL查询。 谁能建议一种可以加快速度的方法? 我的想法是,我只希望返回找到一张发票的行。
SELECT people.name, people.address
FROM people
WHERE ((SELECT COUNT(1) FROM invoices WHERE invoices.pid = people.id)=1)
因此,尝试这样的JOIN
SELECT people.name, people.address
FROM
people
JOIN
invoices ON invoices.pid = people.id
GROUP BY
people.name, people.address
HAVING
COUNT(*) = 1
我也希望您至少在invoices.pid和people.pid上具有索引,名称,地址
使用JOIN
:
SELECT people.name, people.address
FROM people
JOIN invoices ON invoices.pid = people.id
GROUP BY people.name, people.address
HAVING Count(*) = 1
我认为,加入表格在实践和性能上可能会更好。
SELECT people.name, people.address
FROM people INNER JOIN invoices ON invoices.pid = people.id
由于正在编辑OP而进行编辑:您只需要那些只拥有一张发票的人吗? 如果是这样,则无视此问题,并查看其他答案之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.