簡體   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