现在用thinkphp,基本用它的orm来做数据模型对象的关联。
比如主表,子表的关系,用hasMany。
用时一般是这样关联子表(item)
这样用是方便,但在查询数据量大时,就很鸡肋,为什么呢?因为这样的关联查询生成的sql语句是用in方式。
我特确查阅了官方文档,明确说明hasOne有join,in方式。用join时,要设置setEagerlyType(0)
hasMany没有说明,但看它生成的sql是in。
怎么查看它生成的sql呢?
在项目的根目录下,有个runtime/log/日期/日期_sql.log,如
生成的sql如下
数据量大时,用in是不会走索引的,所以在导出时,千万别用模型关联。