1

我有一个问题,因为我想在 mysql 示例中使用程序:

DELIMITER $$

CREATE PROCEDURE `scoreS`()
BEGIN
         PREPARE stmt FROM @scoreS;
           EXECUTE stmt;
           DEALLOCATE PREPARE stmt;
END

以及具有此过程的示例代码:

  SET @results2 = 0;
    SET @scoreS = CONCAT("SELECT CommentsId INTO @results2 FROM `",tableName,"`  WHERE CRC32 = ",Crc32," ORDER BY CommentsId DESC LIMIT 1");
    CALL scoreS();

我想改用这个程序:

SET @results2 = 0;
           SET @scoreS = CONCAT("SELECT CommentsId INTO @results2 FROM `",tableName,"` WHERE CRC32 = ",Crc32," ORDER BY CommentsId DESC LIMIT 1");
           PREPARE stmt FROM @scoreS;
           EXECUTE stmt;
           DEALLOCATE PREPARE stmt;

现在我不知道我什么时候使用这个程序动作会更快添加记录??

4

1 回答 1

1

我不是 MySQL 或其他程序 SQL 代码方面的专家,但我希望这两种方法之间的性能差别很小(假设 scoreS 过程只创建一次)。

我想说的是,PREPARE 语句中的很多价值在于能够重新使用具有不同参数的准备好的查询,并且不会产生重新处理 SQL 语句的成本。既然你没有这样做(你没有使用参数化并且只是立即破坏准备好的查询),那么使用 PREPARE 有什么意义?(当然,我假设您可以通过其他方式执行查询,而不是在过程中使用 PREPARE 和 EXECUTE ,这可能只是表明我的无知!)

于 2012-09-17T14:07:47.297 回答