Heim > Backend-Entwicklung > PHP-Tutorial > 【ThinkPHP】交表 RelationModel 查询效率有关问题(1表交7表 查询效率有关问题)

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

WBOY
Freigeben: 2016-06-13 11:59:50
Original
860 Leute haben es durchsucht

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



但发现执行的SQL是如下的拆分一条条的运算的,SQL记录截图:


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







 


------解决方案--------------------
你最近TP的问题比较多哦。
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage