ホームページ > バックエンド開発 > PHPチュートリアル > [ThinkPHP] テーブル RelationModel を送信するときのクエリ効率に関する問題 (1 つのテーブルを 7 つのテーブルに送信するときのクエリの効率に関する問題)

[ThinkPHP] テーブル RelationModel を送信するときのクエリ効率に関する問題 (1 つのテーブルを 7 つのテーブルに送信するときのクエリの効率に関する問題)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 11:59:50
オリジナル
894 人が閲覧しました

[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に関する問題が多く発生しています。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート