繁体   English   中英

SQL where子句性能问题中的选择计数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM