【发布时间】:2023-03-05 14:30:01
【问题描述】:
我在存储过程中使用PREPARE 语句,但在插入记录时需要很长时间。请建议我替换 PREPARE 声明。
SET @COUNT = 0;
SET @countQuery = CONCAT("select count(ufl.id) INTO @COUNT from user_friend_list as ufl where ufl.user_id = ",@USERREGID," AND ufl.friend_user_id = ",FID);
PREPARE STMTC FROM @countQuery;
EXECUTE STMTC;
IF @COUNT = 0 THEN
INSERT INTO user_friend_list(user_id, friend_user_id) VALUES(@USERREGID,FID),(FID,@USERREGID);
END IF;
DEALLOCATE PREPARE STMTC;
【问题讨论】:
-
定义“很多次”。数量上最好。
-
你准备的语句似乎只读取信息。您的插入似乎不是由 prepare 语句完成的。
-
@RandomSeed :我知道我要求替换 PREPARE 语句。我正在调试代码,看到 PREPARE 语句花费了很多时间,我正在寻找优化。
-
我明白了。您的措辞具有误导性,也许将其改写为“在创建时”。还是“在执行时”?在后一种情况下,您是否尝试过在准备好的语句之外执行底层的
SELECT语句?
标签: mysql sql stored-procedures rdbms