问题:
在现代 RDBMS 上使用存储过程或内联语句通常更有效吗?
答案:
传统上,存储由于预解析、预生成查询执行计划、减少网络延迟以及潜在的缓存优势,过程被认为更加高效。然而,随着硬件和 DBMS 优化技术的进步,这些优势已经变得不那么重要了。
预解析:现代 CPU 可以有效地处理解析开销,这使得这成为存储过程的最小优势。
预生成的查询执行计划:大多数现代 DBMS 现在都会缓存单个 SQL 语句的查询计划,减少存储过程和即席 SQL 之间的性能差异。
减少网络延迟:随着高速网络的出现,通过网络发送 SQL 语句的开销可以忽略不计。
缓存优点:除非存在对 DBMS 数据的共享内存访问,否则存储过程在这方面保持优势
参数化/准备好的 SQL: 提供存储过程的优点,而不需要实际存储过程的开销。
Ad Hoc SQL:现代 DBMS 可以将即席 SQL“抽象”为参数化版本,从而减少与存储的性能差异
结论:
虽然存储过程在特定的边缘情况下仍可能提供一些性能优势,但仅仅出于性能原因而广泛使用它们的需求已经减少。作为临时语句或参数化查询执行的 Vanilla SQL 通常可以与现代 RDBMS 上的存储过程相媲美。应避免通过过度使用存储过程来进行过早优化。
以上是存储过程与内联 SQL:现代 RDBMS 中哪个更高效?的详细内容。更多信息请关注PHP中文网其他相关文章!