Php Yii应用程序日志中有计数(*)
当运行SELECT查询时,Yii似乎经常对每个查询执行两次。第一个是COUNT(),第二个是实际查询 这是什么原因造成的?这似乎效率极低Php Yii应用程序日志中有计数(*),php,yii,Php,Yii,当运行SELECT查询时,Yii似乎经常对每个查询执行两次。第一个是COUNT(),第二个是实际查询 这是什么原因造成的?这似乎效率极低 在一个相关的注释中,为什么Yii如此频繁地执行SHOW COLUMNS FROM和SHOW CREATE表?在模型中设置关系是否足以告诉Yii有关模式的信息?我假设您经常将活动记录与列表小部件(如CGridView和CListView)结合使用 这是什么原因造成的?这似乎效率极低 好的,为了使分页在CListView和CGridView中工作,分配的cacti
在一个相关的注释中,为什么Yii如此频繁地执行SHOW COLUMNS FROM和SHOW CREATE表?在模型中设置关系是否足以告诉Yii有关模式的信息?我假设您经常将活动记录与列表小部件(如
CGridView
和CListView
)结合使用
这是什么原因造成的?这似乎效率极低
好的,为了使分页在CListView
和CGridView
中工作,分配的cactivedaptrovider
(或实际上任何数据提供者)需要获取项目总数。这不适用于通常应用了LIMIT
子句的结果集。因此,执行额外的COUNT()
来检索所述数字
在一个相关的注释中,为什么Yii如此频繁地执行SHOW COLUMNS FROM和SHOW CREATE表?在模型中建立一个关系不足以告诉Yii关于模式的信息吗
不是。Yii所做的远不止管理相关模型。AR抽象层的一部分还用于确定表中哪些字段可用,因此可以在表示表行的模型上访问这些字段。然而,您不必忍受这种情况,因为模式可以方便地缓存。为此,请执行以下步骤:
components
节中的protected/config/main.php
中配置缓存组件,例如CApcCache
db
组件的配置,使其包含以下行:
'schemaCacheId'=>'cache', // This is the name of the cache component you
// configured in step 1. It's also the default value.
'schemaCacheDuration'=>3600, // Cache table schemata for an hour.
// Set this higher if you like.