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