簡體   English   中英

如何提高Insert INTO(…)select查詢的性能?

[英]How to improve performance of Insert INTO (…) select query?

現在,我正在嘗試編寫一個查詢,以減少數據庫中的數據。 我的計划是在一分鍾內得到平均值。

INSERT INTO reduced (current, total, time_stamp)
SELECT
    AVG(current) AS average,
    MAX(total) as total,
    MAX(time_stamp)
FROM
(
    SELECT * from data2  WHERE id <= '500' AND id >= '6'
) AS test
WHERE
    time_stamp <= '2019-05-03 21:24:30' AND
    time_stamp >= '2019-05-03 21:23:30'

如果我僅執行Select語句,則它將在0,002秒內完成。 但是,一旦我添加了INSERT部分,它就需要幾秒鍾。 (3-5秒)這里的問題是,我想對整個數據集重復該查詢(總是加一分鍾),這樣計算起來會花費太多時間。 所以我想知道是否有一種方法可以加快此插入過程。 通常,insert語句也可以非常快速地工作。 因此,我認為在一個查詢中鏈接插入和選擇時會出現問題。

多虧了Tim Biegeleisen,我找到了以下解決方案:

INSERT INTO reduced (current, total, time_stamp) 
SELECT AVG(current) AS average
     , MAX(total) as total
     , MAX(time_stamp) 
  FROM data2 
 GROUP 
    BY UNIX_TIMESTAMP(time_stamp) DIV 60 

這里的想法是使用group by創建時間間隔,這樣我就不必通過循環遍歷數據集,而只需要使用一次插入。

暫無
暫無

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

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