当前位置: 首页 > 面试题库 >

使用准备好的语句有不利之处吗?

谷梁博易
2023-03-14
问题内容

我已经阅读了很多有关准备好的语句的信息,并且在阅读的所有内容中,没有人谈论使用它们的弊端。因此,我想知道是否有人们容易忽视的“有龙”斑点?


问题答案:

Prepared语句只是一个经过解析和预编译的SQL语句,它仅等待提供绑定变量的执行。

任何执行的语句迟早都会准备(需要解析,优化,编译然后执行)。

一条准备好的语句只是重用了解析,优化和编译的结果。

通常,即使您自己不使用准备好的查询,数据库系统也会使用某种优化来节省查询准备的时间。

Oracle,例如,在解析查询时首先检查库缓存,并且如果已经解析了相同的语句,它将使用缓存的执行计划。



 类似资料:
  • 问题内容: 我正在重新设计一个使用最小数据库的PHP驱动的网站。原始版本使用“伪准备语句”(执行引号和参数替换的PHP函数)来防止注入攻击并将数据库逻辑与页面逻辑分开。 用一个使用PDO和真正的预备语句的对象替换这些临时功能似乎很自然,但是在对它们进行阅读之后,我不太确定。PDO似乎仍然是一个好主意,但是准备好的语句的主要卖点之一是能够重用它们……我永远不会。这是我的设置: 这些语句都很简单。大多

  • 我有一个将列名映射到值的。要更新的列事先未知,在运行时决定。 例如< code>map = {col1: "value1 ",col2: "value2"}。 我想执行一个< code>UPDATE查询,用这些列将表更新为相应的值。我能做以下事情吗?如果没有,有没有一种优雅的方法可以不用手动构建查询?

  • 问题内容: 我已经使用prepared语句将订单插入到订单表中,但是现在我想根据订单表中插入的最后一个ID将订单项插入到订单表中: 等同于使用准备好的语句? 问题答案: 如果您使用的是PDO,则为。因此,如果您的数据库句柄称为: 如果您使用的是MySQLi,则为或:

  • 我有以下准备的一个准备好的声明失败了... 我在我的第一份准备好的声明中几乎有同样的准备,而且它进行得很好。我不确定是否我有两个准备好的声明,如果这是造成一个问题,或情况可能是什么? 现在我有个错误... 更新-可能的内部连接,像这样?