【问题标题】:Mysql PREPARE statement is taking much times at the time of record insertionMysql PREPARE 语句在插入记录时花费了很多时间
【发布时间】: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


【解决方案1】:

为什么不这样做

IF 0 = (SELECT COUNT(*) 
          FROM user_friend_list 
         WHERE user_id = @USERREGID
           AND friend_user_id = FID) THEN
    INSERT INTO user_friend_list(user_id, friend_user_id) 
    VALUES (@USERREGID,FID), (FID,@USERREGID);
END IF; 

这里是SQLFiddle演示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2015-08-02
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多