|
15
|
| Camsoft · 技术社区 · 16 年前 |
|
|
1
36
好的,首先99%的查询都是简单的select/insert/update/delete。因为这个活动记录很好。它提供了易于更改的简单语法。对于更复杂的查询,应该只使用query方法。这就是为什么。 第二,它提供了逃逸和;这些查询的安全性。面对现实,您的应用程序可能会有成百上千个查询发生的地方。你一定会搞砸的,忘了好好逃脱其中的一些。活动记录不会忘记。 第三,以我的经验来看,绩效并没有受到显著影响。当然是这样,但每个查询的值可能在.00001左右。我认为这是完全可以接受的增加安全性和健全的检查,它为你做。 最后,我认为很明显,我认为优点远远大于缺点。拥有安全的查询,即使是最初级的开发人员也能理解并且不会搞砸,这是一件很棒的事情。 |
|
|
2
2
http://kore-nordmann.de/blog/why_active_record_sucks.html 编辑 在@kemp的评论之后,我查看了CI用户指南,看看他们是如何实现AR的: 正如你在书中看到的 PoEAA AR是 在数据库表或视图中包装行、封装数据库访问并在该数据上添加域逻辑的对象。 但这不是CI所做的。它只提供了一个API来构建查询。我知道有一个扩展AR的模型类,可以用来构建业务对象,但这更像是一个 Row Data Gateway 那么。退房 PHPActiveRecord
https://stackoverflow.com/search?q=orm+slow 编辑 对于CI的简单查询构建API,我假设性能影响可以忽略。组装查询在逻辑上比仅仅使用将原始SQL字符串传递给db适配器要花费更多的时间,但这应该只是微秒。据我在用户指南中看到的,您还可以缓存查询字符串。但当有疑问时,基准。 取决于您的查询。我见过相当混乱的SQL查询。当通过OO接口表达时,它们不会变得更漂亮。根据API的不同,您可能会发现无法通过API表达的查询。但话说回来,这取决于您的查询。
|
|
|
blogger13 · 视频租赁店数据库的规范化 1 年前 |
|
|
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
Grenish Rai · Firestore错误“用户文档不存在” 1 年前 |
|
|
Saijo-Shi · PLpgsql中的更新触发器 1 年前 |
|
Dante · Django::配置不当:池不支持持久连接 1 年前 |
|
YouLocalRUser · 删除重复行,保留第一行 1 年前 |