首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii createCommand vs Criteria

Yii createCommand vs Criteria
EN

Stack Overflow用户
提问于 2012-08-16 21:27:44
回答 2查看 5K关注 0票数 2

4.我到处都找不到这个令人费解的问题的答案

我几乎可以用标准做任何事情(尽管它看起来像代码一样“糟糕”),就像我可以用createCommand做的那样。

所以我的问题是:是否存在性能差异,或者只有两种方法可以获得相同的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-17 13:37:40

CDbCriteria和createCommand都是在Yii框架中创建查询的方法。此外,有时您需要直接运行mysql查询,而不使用这些方法。

使用CDbCriteria创建复杂的查询非常简单,当您需要使用关系运行连接操作时,它比createCommand更好。

但在性能方面,createCommand比CDbCriteria更好,因为每次我们使用CDbCriteria时,CDbCriteria都会执行一些模式级别的查询来获取表列,并为每个表执行查询。createCommand直接执行mysql查询,而不需要执行模式级查询。

当您开始缓存查询时,两者在性能级别上几乎是相似的。

关于CDbCriteria的一个更好的功能是它的关系查询。因此,我更喜欢使用CDbCriteria和Let yii以自己的方式处理查询。

票数 4
EN

Stack Overflow用户

发布于 2012-08-17 04:45:12

CDbCriteria恰好是对某些CDbConnection (一般称为DAO)功能的一种封装。例如,在ActiveRecord模型中,大多数查询函数,如find()和similars,都使用CDbCriteria对象来初始化CommandBuilder实例。这样,在性能上就会有实际的差异,因为使用CDbcriteria实际上需要执行一些php来生成db命令。但是,我必须说,这是毫无意义的;reference告诉我们:

虽然Yii DAO几乎可以处理任何与数据库相关的任务,但我们很可能会花费90%的时间来编写一些执行常见CRUD (创建、读取、更新和删除)操作的SQL语句。当代码与SQL语句混合在一起时,维护代码也很困难。为了解决这些问题,我们可以使用Active Record。

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

https://stackoverflow.com/questions/11988220

复制
相关文章

相似问题

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