PHP了解准备好的语句

时间:2014-02-27 06:03:12

标签: php mysql

我对php和mysql有点新鲜。我看了很多关于准备好的陈述的帖子,似乎无法找到我的确切场景。

我应该在这种情况下使用预先准备好的声明吗? 我正在使用基于日期范围的查询创建记录的FPDF报告。 当我显示每行数据时,我在“while”语句中有另一个查询,该查询提取与该特定记录关联的用户名数据,因为“usernameID”字段通过另一个表中的外键提取数据。由于这个内部查询在页面加载完成之前被多次调用,它应该是一个准备好的语句吗?

我知道我可以INNER JOIN这些表并且在某些情况下,但我只是想要更好地理解准备好的语句。这是它的用途,还是应该用于会话中经常使用的查询。

我想我得到的是,网页是否会有更好的INNER JOIN性能,或者查询是否应该分开,并且在页面加载时根据ID反复使用的用户名数据准备好语句?

我让用户保持会话打开,当提交页面时会重新发送新数据的页面,但在此之前连接关闭直到他们再次单击提交,所以我不需要准备好的语句,对吧?

我欢迎使用准备好的陈述的时间或例子的任何链接或更好的解释。很抱歉,如果已经回答了这个问题,我很感激您的见解。

谢谢, T-男孩

1 个答案:

答案 0 :(得分:2)

使用预准备语句确实更好,但是如果您的数据库要处理的数据很少,那么内部联接将帮助您,这不会在性能方面产生太大差异。但是如果你的数据库正在处理一个内部有大量数据的表,那么它总是建议使用预准备语句。

在预准备语句中,查询仅解析(或准备)一次,但可以使用相同或不同的参数执行多次。准备好查询后,数据库将分析,编译和优化其执行查询的计划。对于复杂查询,如果需要使用不同的参数多次重复相同的查询,则此过程可能会占用足够的时间,从而显着减慢应用程序的速度。通过使用预准备语句,应用程序避免重复分析/编译/优化循环。这意味着预准备语句使用的资源更少,因此运行速度更快。

根据您的要求生成将使用多个表和查询处理的报告,建议使用预准备语句,但仍取决于表中的数据。