[英]How can I select the count of rows as a subquery of results from main query
僅在WHERE places.x < 5
為true時,我才嘗試在一個地方收集項目的數量。 這樣做的原因是, at_places
和places
表都包含數萬行。
這是我要嘗試做的一般想法; 但是我無法測試它,因為它需要很長時間才能完成。 我認為,能夠在一個查詢中同時包含計數的獲取和位置,比運行后續查詢獲取返回的每個位置的計數要快得多。
SELECT `places`.`id`,
`places`.`name`,
(SELECT COUNT(*) FROM `at_places` WHERE places_id=places.id) AS count
FROM `places`
WHERE places.x < 5
您可能會發現顯式連接效果更好:
select p.id, p.name, ap.cnt
from places p join
(select ap.places_id, count(*) as cnt from at_places ap group by ap.places_id) ap
on p.id = ap.places_id
where p.x < 5
我相信您的性能問題是由於以下事實造成的:子查詢對外部查詢中的每一行執行一次。 at_places.places_id
上的索引也應加快查詢速度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.