gpt4 book ai didi

Mysql存储过程删除语句速度慢

转载 作者:行者123 更新时间:2023-11-30 01:37:57 27 4
gpt4 key购买 nike

我有一个奇怪的 mysql 查询速度问题,我正在努力解决这个问题。我将 mysql 数据库从一台服务器移动到另一台服务器,而一台本应更加强大的服务器运行某些 mysql 查询的速度几乎是原始服务器的 4 倍。经过几天的调试,我终于发现速度存在巨大差异,具体取决于存储过程中 where 子句中变量的使用方式。以下是一些示例:

快:

set @s = Concat('delete from visitids where VisitID=''',xVisitID,''' and OrgCode=''',xOrgCode,'''');
PREPARE stmt FROM @s;
EXECUTE stmt;

慢:

delete from visitids where VisitID=xVisitID and OrgCode=xOrgCode;

慢:

set @s = Concat('delete from visitids where VisitID=xVisitID and OrgCode=xOrgCode');
PREPARE stmt FROM @s;
EXECUTE stmt;

第一个示例比接下来的 2 个示例快大约 5 倍。另一个奇怪的事情是它取决于服务器和可能的 mysql 版本。在一台服务器上,where 子句中如何使用变量并不重要,但在另一台服务器上则不然。我错过了什么吗?为什么在 where 子句中包含变量的直接 sql 语句比使用字符串构建并准备/执行的 sql 查询的语句要慢得多?

最佳答案

我遇到了同样的问题。在sp中,删除非常慢。直接运行delete语句时,delete语句速度非常快。

关于Mysql存储过程删除语句速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16596700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com