Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编码点火器/数据映射器“;其中“U相关”;导致太多查询_Php_Codeigniter_Codeigniter Datamapper - Fatal编程技术网

Php 编码点火器/数据映射器“;其中“U相关”;导致太多查询

Php 编码点火器/数据映射器“;其中“U相关”;导致太多查询,php,codeigniter,codeigniter-datamapper,Php,Codeigniter,Codeigniter Datamapper,我在配置文件和类别之间有一个多对多映射。此查询: $profiles = new Profile(); $profiles->where('foobar_flag',1); $profiles->where_related($category); $profiles->get(); 运行大约需要30秒,配置文件表中有大约1000个条目。还有一个类别表和一个profiles\u categories表。每次执行时,我的查询量达到了惊人的4000次 如何加快速度?如果您对da

我在
配置文件
类别
之间有一个多对多映射。此查询:

$profiles = new Profile();  
$profiles->where('foobar_flag',1);
$profiles->where_related($category);
$profiles->get();
运行大约需要30秒,配置文件表中有大约1000个条目。还有一个类别表和一个profiles\u categories表。每次执行时,我的查询量达到了惊人的4000次


如何加快速度?

如果您对datamapper中的函数不满意,请找到一种简化的方法,因为您的活动记录查询可能会像您所说的那样代价太高

始终运行您的探查器:

$this->output->enable_profiler(TRUE);

这会让你真正了解幕后正在做什么。从那里开始优化。否则,我们需要更多的代码来给出相关的答案。

如果您对datamapper中的函数不满意,请找到一种简化的方法,因为您的活动记录查询可能会像您所说的那样代价太高

始终运行您的探查器:

$this->output->enable_profiler(TRUE);

这会让你真正了解幕后正在做什么。从那里开始优化。否则,我们需要更多的代码来给出相关的答案。

我们可能需要看到更多的代码。您是否可以至少隔离一些查询,或者仅使用
where\u related()
行隔离查询?您是否在模型的
\u构造()
中执行任何操作?如何创建
$category
?你预计会有多少结果,1000?其中与_相关的查询会以某种方式增加10.7倍。构造方法本质上是空的$category只是在一个categories数组中迭代。您最好从
$category
ids创建一个数组,然后在联接表上执行
where\u in()
。我不想添加这一点作为答案,因为你不应该用ORM做这样的事情,但我不知道这是否是Datamapper的一个缺点。我想知道这是否可能。请修改你的问题,你显示的是零代码,不是建设性的问题,标记为关闭。我们可能需要看到更多的代码。您是否可以至少隔离一些查询,或者仅使用
where\u related()
行隔离查询?您是否在模型的
\u构造()
中执行任何操作?如何创建
$category
?你预计会有多少结果,1000?其中与_相关的查询会以某种方式增加10.7倍。构造方法本质上是空的$category只是在一个categories数组中迭代。您最好从
$category
ids创建一个数组,然后在联接表上执行
where\u in()
。我不想添加这一点作为答案,因为你不应该用ORM做这样的事情,但我不知道这是否是Datamapper的缺点。我想知道这是否可能。请修改你的问题,你显示的是零代码,不是建设性问题,标记为关闭。