【发布时间】:2021-09-19 01:47:42
【问题描述】:
我正在尝试通过存储过程将行插入到数据库表中。我的表包含超过 500000 行,因此当我执行该过程时,执行时间超过 4 小时。 知道我使用 Xampp 服务器、MySQL 作为数据库管理系统和 HeidiSQL 操纵数据库。 下面你会看到过程脚本。代码是否有任何问题,或者我应该添加其他内容。 提前感谢您的帮助。
BEGIN
DECLARE finished INTEGER DEFAULT 0;
DECLARE post_id BIGINT;
DECLARE v_id BIGINT;
DECLARE done INT DEFAULT 0;
DECLARE msg varchar(10000) DEFAULT "";
DEClARE post_cursor CURSOR FOR
SELECT distinct po.post_id FROM wp_postmeta po;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET finished = 2;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Open post_cursor;
get_posts: LOOP
FETCH post_cursor INTO post_id;
select CONCAT('postid', post_id) ;
IF done = 1 THEN
LEAVE get_posts;
END IF;
SET v_id = (select MAX (meta_id) from wp_postmeta) +1 ;
INSERT INTO wp_postmeta (meta_id, post_id, meta_key, meta_value) VALUES (v_id, post_id ,"_company_name", "blabla");
SET done = 0;
END LOOP;
CLOSE post_cursor;
END
【问题讨论】:
-
这看起来很不对劲,wp_postmeta 应该有一个 autoincrmenet,而不是 Max +1,因为你必须一直运行,以及循环。当您不必从其他地方获取数据时,这就更没有意义了。那么“_company_name”、“blabla”从何而来。
-
感谢您的回复。实际上,我正在尝试为表 wp_postmeta 中的每个 post_id 添加相同的值(“_company_name”、“blabla”)。
标签: mysql stored-procedures phpmyadmin xampp heidisql