簡體   English   中英

MySQL 查詢耗時 2 分鍾

[英]MySQL query takes 2 minutes

我有個問題。 我正在運行 MySQL PhpMyAdmin 服務器,我有 3 個表:

  • 燭台數據
  • 燭台數據Hist1
  • 燭台數據Hist2

然后我使用以下源查詢創建了一些:

SELECT
    a.*
FROM
    (
    SELECT
        *,
        'CandlestickData' AS SOURCE
    FROM
        CandlestickData
    UNION
SELECT
    *,
    'CandlestickDataHist1' AS SOURCE
FROM
    CandlestickDataHist1
UNION
SELECT
    *,
    'CandlestickDataHist2' AS SOURCE
FROM
    CandlestickDataHist2
) AS a
ORDER BY
    a.MainKey
DESC

這讓我看到了 170 萬條記錄。 當我對視圖執行以下簡單查詢時:

SELECT * FROM my_created_view;

執行查詢大約需要 2 分鍾。 有沒有辦法讓它更快?

您可以使用UNION ALL而不是UNION加快速度:

SELECT cd.*
FROM ((SELECT cd.*, 'CandlestickData' AS SOURCE
       FROM CandlestickData cd
      ) UNION ALL
      (SELECT cd.*, 'CandlestickDataHist1' AS SOURCE
       FROM CandlestickDataHist1 cd
      ) UNION ALL
      (SELECT cd.*, 'CandlestickDataHist2' AS SOURCE
       FROM CandlestickDataHist2 cd
      )
     ) cd
ORDER BY cd.MainKey DESC;

這仍然需要對所有數據進行排序。 但是,它將消除刪除重復項的開銷。 我可能會冒險說它會快 50%。

如果您真的想加快查詢速度,則需要將所有數據存儲在一個表中。 然后您可以order by創建索引。

暫無
暫無

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

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