[ThinkPHP] テーブル RelationModel のクエリ効率の問題 (1 つのテーブルと 7 つのテーブルのクエリ効率の問題)
この投稿の最終編集日はデフォルトで 2014-05-19 12:21:36 ThinkPHP バージョン 3.1 .3 、この Web サイト 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
次に、メインのテーブル情報を ThinkPHP の RelationAction を使用して、さらに 3 つのテーブル (実際には 7 つのテーブル) に送信する必要があります。
<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 />
ログイン後にコピー
しかし、実行された SQL は次のように別々の操作に分割されていることがわかりました。SQL レコードのスクリーンショット:
ThinkPHP によって実行原則として、最初に Info テーブル内のデータをクエリし、次に PHP を使用して 1 つずつクエリを実行し、それを配列に追加します。
問題は、これが効率に大きな影響を与えるのではないかということです。クエリを最適化するにはどうすればよいでしょうか?独自の SQL クエリを定義できますか (デフォルトでは 7#zbphp.com)
-----解決策----- ---------------
最近TPに関する問題が多く発生しています。