我正在尋找一種有效的替代子查詢/連接的查詢。比方說,我存儲有關的公司有以下的列信息的表:MySQL替代子查詢/加入
- 名稱:公司名稱
- 狀態:狀態公司位於 在
- 收入:年收入公司
- 員工:這家公司有多少員工 有
- active_business:羯羊或不是公司 是商業(1 =是,0 =否)
假設從這個表格中,我想知道每個州有多少家公司滿足最低收入要求的條件,以及有多少家公司滿足最低僱員人數要求。這可以表示爲以下子查詢(也可以寫成一個連接):
SELECT state,
(
SELECT count(*)
FROM records AS a
WHERE a.state = records.state
AND a.revenue > 1000000
) AS companies_with_min_revenue,
(
SELECT count(*)
FROM records AS a
WHERE a.state = records.state
AND a.employees > 10
) AS companies_with_min_employees
FROM records
WHERE active_business = 1
GROUP BY state
我的問題是這樣的。我可以在沒有子查詢或連接的情況下執行此操作嗎?由於查詢已經遍歷每一行(沒有索引),是否有一些方法可以添加條件:如果行符合最低收入要求並處於相同狀態,則會爲查詢增加某種計數器(類似於map/reduce)?
沒有索引?那麼,那就是你的問題了。解決了。 – Strawberry
通常,這種情況將被編入索引。但是,這實際上並沒有在mysql上運行。我在Memsql中使用JSON數據存儲和用戶提交的動態字段,因此特定值的索引不是正確的路徑。而且,由於memsql在內存中,它已經運行得非常快,所以不需要索引。我以這樣的方式提交了這個問題,因爲它在邏輯上等同於問題的簡單方式。 – user396404