2

很明显,在循环中执行数据库查询存在性能问题。但是如果查询被用作准备好的语句,它有什么区别吗?

最好将表连接在一起并获得结果或在循环中使用准备好的语句?

4

2 回答 2

2

几乎总是首选使用join,而不是遍历结果集以获得额外的结果。

关系数据库管理系统是为组合相关结果而构建的,并且这样做非常有效......此外,这将为您节省许多往返数据库的次数,如果过度使用,这可能会变得昂贵 - 无论您使用的是准备好的语句还是不是。

于 2013-02-05T17:05:41.873 回答
1

准备好的语句的开销可能不会是输入的转义,而是与数据库的连接、重新连接或发送最终确定的 sql 语句的行为。你的代码和关系数据库之间的接口很可能是这个过程的慢点,而不是其他任何事情。

但是,就我而言,我通常会从一开始就选择最简单且最能够维护的东西,并且只有在性能实际上显示自己很慢时才担心性能。在单独的函数或方法中编写数据抓取功能,以便在性能证明需要优化时更改实现。

此时,您可以开始优化您的 sql,并使用连接或联合作为多个准备好的语句的替代方案。

于 2013-02-05T17:14:19.030 回答