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