存储过程的性能如何?使用它们是否值得代替在PHP/MySQL调用中实现复杂查询?
存储过程能够提供一定的性能提升,但主要用于执行那些使用简单查询难以完成或无法完成的任务。存储过程非常适合简化许多不同类型客户端对数据的访问。与将这些细节留给开发人员不同,数据库管理员喜欢它们,因为它们控制了数据库的使用方式。
要获得更好的性能,请考虑索引和合适的表设计。
哎呀,我不希望有人读了这些答案却有了错误的印象。在MySQL与SQL Server/Oracle上,“Stored Whatever”的实现之间有一些非常重要的区别。
请参阅:http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/
每个问这个问题的人都对MySQL的存储过程实现有所假设;他们错误地认为存储过程是编译并存储在全局存储过程缓存中的,类似于Microsoft SQL Server[1]或Oracle[2]中的存储过程缓存。
这是错误的。彻头彻尾的不正确。
这里是真相:每个连接到MySQL服务器的单独维护它自己的存储过程缓存。
花一分钟时间阅读文章和评论。它很简短,你会更好地理解问题。
正如JohnFX在之前的回答中指出的那样:
存储过程的性能优势是可疑的,最多只有微不足道的影响。以下是一些相关阅读材料:
http://statestreetgang.net/post/2008/04/My-Statement-on-Stored-Procedures.aspx
http://betav.com/blog/billva/2006/05/are_stored_procedures_faster_t.html
祝愉快。