hasOne一对一查询,on多条件,生成多余的很耗时的查询。 [ 2.0 版本 ]
我在AR定义了关系:
public function getTest()
return $this->hasOne(Tablea::class, ['id' => 'f_id', 'inuse_id' => 'use_id']);
}
查询的时候:$query->joinWith('test');
我查询20条数据,limit20.
最终查询是...FROM b LEFT JOIN tablea ON tablea.id=b.f_id AND tablea.inuse_id=b.use_id....
会有一条很耗时间的SQL执行:
SELECT * FROM
tablea WHERE (
id,
inuse_id) IN ((6158269, 4936162), (6158333, 4936226))
怎么会有这样一条查询?我猜是getTest导致的,像我这种on
有多个联合条件的要怎么写才不会有下面这个这么耗时的SQL产生?
共 1 个回答
dyllen
注册时间:2014-09-09
最后登录:2020-10-16
在线时长:48小时47分
最后登录:2020-10-16
在线时长:48小时47分
- 粉丝8
- 金钱400
- 威望80
- 积分1680