[英]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.