在 SQL 和 MySQL 中创建存储过程有什么好处?
2022-08-30 19:05:25
我有一个理论问题。
我看不出在PHP文件中声明函数和在数据库中创建执行相同操作的存储过程之间有任何区别。
例如,当我可以使用PHP函数查询数据库时,为什么我要创建一个存储过程来返回特定国家/地区的所有城市的列表,并且它将具有相同的结果?
在这种情况下,使用存储过程有什么好处?或者哪个更好?要使用 PHP 中的函数或在数据库中使用存储过程?两者之间有什么区别?
谢谢。
我有一个理论问题。
我看不出在PHP文件中声明函数和在数据库中创建执行相同操作的存储过程之间有任何区别。
例如,当我可以使用PHP函数查询数据库时,为什么我要创建一个存储过程来返回特定国家/地区的所有城市的列表,并且它将具有相同的结果?
在这种情况下,使用存储过程有什么好处?或者哪个更好?要使用 PHP 中的函数或在数据库中使用存储过程?两者之间有什么区别?
谢谢。
一些好处包括:
可维护性:您可以更改过程中的逻辑,而无需编辑 app1、app2 和 app3 调用。
安全性/访问控制:与控制谁可以访问哪些表或哪些表行相比,更容易担心谁可以调用预定义的过程。
性能:如果您的应用与数据库不在同一台服务器上,并且您正在执行的操作涉及多个查询,则使用过程可以通过涉及对数据库的单个调用来减少网络开销,而不是与查询一样多的调用。
性能 (2):通常缓存过程的查询计划,允许您一次又一次地重用它,而无需重新准备它。
(在您的特定示例中,不可否认,这些好处为零。
简短的回答是,如果您希望代码可移植,请不要使用存储过程,因为如果您希望在某个时候更改数据库,例如从MySQL到PostgreSQL,则必须更新/移植您编写的所有存储过程。
另一方面,有时使用存储过程可以获得更好的性能结果,因为所有这些代码都将由数据库引擎运行。如果存储过程使用不当,您还可能使情况变得更糟。
我不认为选择国家是非常昂贵的操作。因此,我想在这种情况下您不必使用存储过程。