我正在使用RedBeanPHP连接到Postgres数据库,但是对于其他简单的查询,我遇到的查询时间很慢。这似乎与RedBean的exportAll()
有关。我访问的类似于RedBean的例子:
$books = R::findAll( 'book' );
$beans= R::exportAll( $books );
直接使用查询:
$rows = R::getAll($sql);
$books = R::convertToBeans('books', $rows);
$beans= R::exportAll( $books );
此查询在一个只有66的表上大约需要1.25秒,并且有两个映射表(在RedBean中链接)。此查询时间似乎非常慢,并且与R :: exportAll()直接相关。
版本:
有什么建议吗?
答案 0 :(得分:2)
经过大量研究后,我在'duplicate' section of the RedBeanPHP website中找到了一个描述以下内容的模糊:
dup()和exportAll()都需要查询数据库模式 慢。要加速该过程,您可以传递数据库模式:
R::$duplicationManager->setTables( $schema ); To obtain the schema use: $schema = R::$duplicationManager->getSchema(); You can now use this schema to feed it to setTables(). R::duplicate() and
R :: exportAll()都使用此架构。
这正是我所经历的,但由于$ duplicationManager现在是一个私有变量(Found here in the API),我无法访问R::$duplicationManager->getSchema()
。
幸运的是,有一个' getDuplicationManager()'在API文档中进一步发挥作用,取得了巨大的成功:
$schema = R::getDuplicationManager()->getSchema();
R::getDuplicationManager()->setTables($schema);
这使我的时间减少到约0.14秒,这更合理。