簡體   English   中英

mysql workbench需要太長時間才能應用簡單查詢

[英]mysql workbench takes too long time to apply a simple query

這是我的查詢

    SELECT 
    COUNT(a.ref) AS refoct2015,
    COUNT(b.ref) AS refspet2015,
    COUNT(c.ref) AS refoct2014,
    port_ID
FROM
    report AS a
        JOIN
    report_sept2015 AS b USING (port_ID)
        JOIN
    report_oct2014 AS c USING (port_ID)
GROUP BY port_ID , a.booking_date , b.booking_date , c.booking_date

但是sql不能停止工作時,會花費超過15分鍾的時間給我一個結果。 我重新啟動了很多次,更改了讀取時間(“編輯”>“首選項”等),但仍然沒有什么很慢的

如果在連接發生之前需要計數,則必須在連接之前生成計數。

這是實現此目的的一種方法:

SELECT A.Port_ID, A.refoct2015, B.refSept2015 , C.RefOct2014 
FROM (SELECT Port_ID, Booking_Date, count(Ref) as refoct2015 
      FROM report
      GROUP BY Port_Id, Booking_Date) A
INNER JOIN 
     (SELECT Port_ID, Booking_Date, count(Ref) as refSept2015 
      FROM Report_sept2015
      GROUP BY Port_Id, Booking_Date) B 
  ON A.Port_ID = B.Port_ID
INNER JOIN 
     (SELECT Port_ID, Booking_Date, count(Ref) as RefOct2014 
      FROM report_oct2014
      GROUP BY Port_Id, Booking_Date) C 
  ON B.Port_ID = C.Port_ID

雖然包含booking_date而不加入它似乎很奇怪...

如果我在表A中有100個不同的日期,在表B中有100個不同的日期,而在表c中有100個不同的日期,那么假設每個共享相同的port_Id,則結果集將為100 * 100 * 100 ...可能是為什么要使用15分鍾...確定您沒有錯過任何參加嗎?

這對我來說似乎更有意義...

SELECT A.Port_ID, A.refoct2015, B.refSept2015 , C.RefOct2014 
FROM (SELECT Port_ID, Booking_Date, count(Ref) as refoct2015 
      FROM report
      GROUP BY Port_Id, Booking_Date) A
INNER JOIN 
     (SELECT Port_ID, Booking_Date, count(Ref) as refSept2015 
      FROM Report_sept2015
      GROUP BY Port_Id, Booking_Date) B 
  ON A.Port_ID = B.Port_ID
 and A.Booking_date= B.Booking_date
INNER JOIN 
     (SELECT Port_ID, Booking_Date, count(Ref) as RefOct2014 
      FROM report_oct2014
      GROUP BY Port_Id, Booking_Date) C 
  ON B.Port_ID = C.Port_ID
 and A.Booking_date= B.Booking_date

但是,這意味着如果日期和端口ID不在所有表格中,那么您將遇到問題。 通過內部聯接消除數據。 通常,我會使用完全外部聯接來解決此問題,但mySQL不支持它。 您必須使用外部聯接和聯合來模擬行為。

因此,不要繼續猜測您的追求。 用簡明的英語解釋這些表的用途以及您要完成的工作; 通過編輯原始問題。

恐怕我們會陷入XY問題

如果不在選擇中,booking_date為什么相關?

看來您似乎想按日期對這三個表中的數據進行透視...但是卻沒有顯示日期。

你在追尋像

Port_Id   Date    Oct2015  Sept2015  Oct2014
1        1/1/2015     500       250        0
1        1/2/2015     100        60        0
2        1/1/2015     100       540       60

暫無
暫無

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

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