この mysql ステートメントを簡素化し、クエリ効率を最適化する方法を教えてください~~~~~

WBOY
リリース: 2016-06-23 14:39:49
オリジナル
896 人が閲覧しました

この投稿の最終編集者は setoy で、2013-12-19 12:03:34 です。

以下に示すように、管理者テーブル、部門テーブル、および部門に対する管理者の評価テーブルの 3 つのテーブルがあります。各クエリを評価し、部門のスコアをカウントする必要があります。部門にスコア記録がない場合でも、クエリ統計の結果は次のように表示されます。 mysql ステートメントを理解するため、段落をまとめました:
select   '' as type,   `class`.`name` as cname,   `score`.`cid`,   `score`.`uid`,   `user`.`name` as uname,  `score`from `score`right join `class` on `score`.`cid` = `class`.`cid`left join `user` on `score`.`uid` = `user`.`uid`union all(  select     '汇总',     `c`.`cname`,     `c`.`cid`,     `c`.`uid`,     count(`cid`) as uname,    sum(`score`) as score  from (    select       '' as type,       `class`.`name` as cname,       `score`.`cid`,       `score`.`uid`,       `user`.`name` as uname,      `score`    from `score`    right join `class` on `score`.`cid` = `class`.`cid`    left join `user` on `score`.`uid` = `user`.`uid`  ) c group by `cname`)order by `cname` asc, `type` asc;
ログイン後にコピー


この SQL ステートメントは複雑すぎるようです。このステートメントは簡略化できますか?さらに、クエリ効率の観点から最適化することはできますか?
テーブル構造、データ、コードはすべてここにあります: http://sqlfiddle.com/#!2/6f5db6/10
ぜひ参考にしてください


ディスカッション (解決策) に返信してください

シンプルな SQL + 段落 PHP プログラムは実装されていますか?
desc sql
キー フィールドにインデックスを追加してください。

desc sql

キー フィールドへのインデックスの追加について詳しく教えてください。

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