我已经阅读了很多有关准备好的语句的信息,并且在阅读的所有内容中,没有人谈论使用它们的弊端。因此,我想知道是否有人们容易忽视的“有龙”斑点?
Prepared语句只是一个经过解析和预编译的SQL语句,它仅等待提供绑定变量的执行。
SQL
任何执行的语句迟早都会准备(需要解析,优化,编译然后执行)。
一条准备好的语句只是重用了解析,优化和编译的结果。
通常,即使您自己不使用准备好的查询,数据库系统也会使用某种优化来节省查询准备的时间。
Oracle,例如,在解析查询时首先检查库缓存,并且如果已经解析了相同的语句,它将使用缓存的执行计划。
Oracle