簡體   English   中英

如何提高此聯結表查詢的性能

[英]How can I improve the performance for this junction table query

有 SALARY 表和 COMPANY 表。

我需要輸出平均工資高於14000的公司名單

期待輸出。 公司名單

Baker Hughes Incorporated 
...

這是我當前的查詢。 我想知道是否有更有效的查詢方式?

SELECT NAME FROM COMPANY WHERE ID in (
    SELECT COMPANY_ID 
    FROM Salary S 
    GROUP BY COMPANY_ID Having  AVG(Salary) >= 140000
)

在此處輸入圖片說明

您可以嘗試使用相關子查詢並對IDCOMPANY_ID進行索引

SELECT NAME FROM COMPANY c WHERE exists (
        SELECT 1  COMPANY_ID 
        FROM Salary s  where s.COMPANY_ID=c.ID
         Having  AVG(Salary) >= 140000
                   )

我認為最簡單的查詢形式是:

SELECT c.Name
FROM Company c JOIN
     Salary s
     ON s.COMPANY_ID = c.ID
GROUP BY c.Name, c.COMPANY_ID
HAVING AVG(s.Salary) >= 14000;

在嘗試其他形式之前,我會嘗試這個。 我希望 Zaynul 的答案(使用EXISTS )在正確的索引下會稍微快一點,但有時 MySQL 會讓我感到驚訝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM