簡體   English   中英

MySQL 5.5.62-log版本中的存儲過程INSERT INTO SELECT

[英]Stored Procedure INSERT INTO SELECT in MySQL 5.5.62-log version

我必須在tbl2中注冊來自tbl1的所有行,以及相同nickname的最后訪問date

我的數據庫是MySQL 5.5.62-log版本。

我試過這個Stored Procedure

沒有錯誤,但在tbl2上插入很長。

有什么優化這個 SP 的建議嗎?

BEGIN

DECLARE var INT;

SET var = 0;

WHILE var < 1 DO
    INSERT IGNORE INTO `tbl2` (
                `NickName`,
                `Continent`,
                `Region`,
                `AccessLastDate`
    ) SELECT
        `NickName`,
        `Continent`,
        `Region`,
        `AccessLastDate`
    FROM
        `tbl1` t1
    WHERE
        Continent IN ('Asia','Oceania','Africa')
        AND 
             t1.`AccessLastDate` = (
        SELECT
            MAX(t2.`AccessLastDate`)
        FROM
            `tbl1` t2
        WHERE
            t2.`NickName` = t1.`NickName`
    )
ORDER BY
    t1.`AccessLastDate`;

SET var = var + 1;

END
WHILE;

在此處輸入圖像描述

AccessLastDate 上的索引可能會有所幫助。

請注意,添加索引會增加插入時間並使用更多磁盤空間。

暫無
暫無

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

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