我必须在tbl2
中注册tbl1
中所有具有最后访问权限date
的行,并且访问同一nickname
。
我的数据库是MySQL 5.5.62日志版本。
我尝试了这个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;
答案 0 :(得分:0)
在AccessLastDate上建立索引可能会有所帮助。
请注意,添加索引会增加插入时间并占用更多磁盘空间。