首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Flourishlib fDatabase禁用预准备查询?

为什么Flourishlib fDatabase禁用预准备查询?
EN

Stack Overflow用户
提问于 2012-11-06 03:24:24
回答 1查看 135关注 0票数 2

我发现了FlourishLib,我查看了他们的fDatabase.php代码,看看他们是如何处理sql查询的,我真的很惊讶地发现,当您使用MySQL时,他们禁用了准备好的查询。

代码语言:javascript
复制
$this->connection->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);

(line 599)

他们为什么要这么做?

我习惯了PDO.prepare & PDOStatement.execute,我想知道为什么会选择这种选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-06 04:28:55

在很长一段时间内,MySQL服务器端的预准备语句在理论上都是性能上的问题,也是恼人的原因。This MySQL Performance Blog post from 2006概述了大部分原因。需要注意的是查询缓存以及准备好的语句如何绕过它,准备-参数-执行循环的额外往返,以及可以和不能用作占位符值的更严格的标准。

Starting with MySQL 5.1.17,一些但不是所有的预准备语句现在都可以使用查询缓存。其他次要的问题仍然存在。

值得一提的是,PDO如何处理预准备语句有两个控制。另一种称为PDO::ATTR_EMULATE_PREPARES。另请参阅:this not-quite-dupe question from earlier this year

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13238911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档