我什么时候应该使用存储过程

时间:2010-12-26 07:52:40

标签: php mysql stored-procedures

如果我使用单一选择构建一个大型应用程序,插入,删除将会中断我的代码。

我应该使用存储过程吗?

注意:使用PHP和mysql

4 个答案:

答案 0 :(得分:1)

  

如果我使用单一选择构建一个大型应用程序,插入,删除将会中断我的代码。

只要你正确地编写了你的​​查询意味着考虑优化,避免sql注入。

  

我应该使用存储过程吗?

当您希望/需要在多个页面上运行相同查询时,存储过程非常理想。将它们想象为您在应用程序周围重复使用的功能。但是,存储过程似乎也有性能提升。

答案 1 :(得分:1)

请记住,存储过程使得扩展应用程序(分布式数据库)和更改数据库引擎变得更加困难。

答案 2 :(得分:1)

简单回答“几乎总是”

由于

1- SQL Injecton Attack

2-代码重用

3-绩效观点

由于以上几点,应考虑存储过程

修改

SQL INJECTION

答案 3 :(得分:1)

正如其他评论所说,如果您确定不会更改底层DBMS,则应使用存储过程。几乎每个DBMS都有自己的PL语法,因此使用存储过程将使您的应用程序无法移植到其他DBMS。

但是,正如已经说过的那样,存储过程将提升您的性能,因为在大多数DBMS上,它们将由DBMS引擎进行编译和优化。

对于SQL注入保护,存储过程不是唯一的解决方案:大多数高级别的数据库层(例如PHP中的PDO,Java中的JDBC或DB2 python接口)将能够执行预准备语句。准备好的语句是您要重用的查询,db管理层将使用DBMS功能进行编译,并且在调用时将使用不能注入代码的参数,因为已准备好的查询已经编译,使得SQL注入几乎不可能。这取决于您使用的DBMS和高级数据库功能。