欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

【ThinkPHP】交表 RelationModel 查询效率有关问题(1表交7表 查询效率有关问题)

程序员文章站 2022-05-08 20:49:43
...
【ThinkPHP】交表 RelationModel 查询效率问题(1表交7表 查询效率问题)
本帖最后由 default7 于 2014-05-19 12:21:36 编辑 ThinkPHP 版本 3.1.3,做一个信息平台,类似 www.35dalu.com/info 这个网站 。

有表如下:
1)info(tid,title,uid,d1,d2,d3,c1,c2,c3,status,date1,date2)
2)member(uid,uname)
3)cat(id,name,level)
4)diqu(id,name,level)

对应关系:
info.uid=member.uid
info.d1=diqu.id & diqu.level=1
info.d2=diqu.id & diqu.level=2
info.d3=diqu.id & diqu.level=3
info.c1=cat.id & cat.level=1
info.c2=cat.id & cat.level=2
info.c3=cat.id & cat.level=3

现需要查询列表数据,主表info会交表另外的3个表(实际上算起来是交7个表),用ThinkPHP的RelationAction。

//by default7#zbphp.com Index/Info
$obj = D('Info');
$this->info = $obj->where('status=1')->order('date2 DESC')->limit(60)->relation(true)->field('tid,title,d1,d2,uid')->select();
dump($obj->getLastSql());
dump('total sql query count:'.N('db_query')); //居然SQL 查询多大367条!



但发现执行的SQL是如下的拆分一条条的运算的,SQL记录截图:
【ThinkPHP】交表 RelationModel 查询效率有关问题(1表交7表 查询效率有关问题)

ThinkPHP执行的原理是先在Info表查询数据,然后再用PHP去一个个查询再数组加进去?
很疑问的是 这样不会非常影响效率吗?如何优化查询?可否自己定义SQL查询(by default7#zbphp.com)










------解决方案--------------------
你最近TP的问题比较多哦。
【ThinkPHP】交表 RelationModel 查询效率有关问题(1表交7表 查询效率有关问题)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • 【ThinkPHP】交表 RelationModel 查询效率有关问题(1表交7表 查询效率有关问题)
  • 专题推荐