存储过程在 php/mysql 世界中是行不通的吗?

2022-08-30 21:44:21

我引用了我收到的另一个问题的部分答案:

在PHP / MySQL世界中,我会说存储过程是行不通的。

我想知道:是这样吗?为什么?为什么不呢?

[编辑]我的意思是这是一个没有特定需要的一般性问题[/edit]


答案 1

我开发并维护一个大型PHP / MySQL应用程序。以下是我对存储过程的经验。

随着时间的推移,我们的应用程序变得非常复杂。由于所有逻辑都在php端,一些操作将使用100多个短查询来查询数据库。

MySQL非常快,性能仍然是可以接受的,但不是很好。

我们在最新版本的软件中决定将一些逻辑移动到存储过程中以进行复杂操作。

我们确实取得了显着的性能提升,因为我们不必在PHP和MySQL之间来回发送数据。

我同意这里的其他海报,即PL / SQL不是现代语言,很难调试。

底线:存储过程是某些情况下的好工具。但是,除非您有充分的理由,否则我不建议使用它们。对于简单的应用程序,存储过程不值得麻烦。


答案 2

在MySQL中使用存储过程时,您通常需要使用PHP中的mysqli接口,而不是常规的mysql接口。

这样做的原因是,存储过程通常会返回 1 个以上的结果集。如果是这样,mysql API将无法处理它,并且会出现错误。

mysqli接口具有处理这些多个结果集的函数,例如mysqli_more_resultsmysqli_next_result

请记住,如果从存储过程返回任何结果集,则需要使用这些 API,因为存储过程会为实际执行生成 1 个结果集,然后为存储过程有意返回的每个结果集生成 1 个额外的结果集。


推荐