この投稿は php_way によって最終編集されました: 2014-12-20 09:17:09製品テーブル tp_goods:
mysql> select * from tp_goods;
---- ----------------------- ---- - --------- -------------- --------
| 商品名 |
-- ----------------------- ----------- ----------- -- --------
| 1 | Smartisan t1 バージョン 32G | 2488.00 | 2 |
|簡単に言えば | 29.80 | 4 |
| 2998.00 | OSA レディース ダウン ジャケット |
---- ----------------------- ------------- ------------- - ---- --------
オンライン情報によると
mysql>select cat_id,goods_name,goods_price from tp_goods where cat_id=1;
まず from 操作を実行して、仮想テーブル VT1 を取得します ——> 次に、where 操作を実行して cat_id=1 を持つすべての行をフィルタリングし、仮想テーブル VT2 を取得します。この時点の列はまだ tp_goods テーブルのすべての列です -> 最後に、このときの列は cat_id、goods_name、goods_price の列となり、結果が返されます。
----------------------------------------------- --- ------------------------
mysql> cat_id によって tp_goods グループから max_price として cat_id,max(goods_price) を選択します;
質問:
1. このステートメントはどのように実行されますか? group by 関数と max 関数は同時に実行されますか?
2. group by と select を最初に実行するのは誰ですか?
------ソリューションのアイデア----------------------
1.優先度ごとにグループ化 2.優先度でグループ化
ここで > 集計関数でグループ化
-----ソリューションのアイデア---------- ---------
あなたが理解している実行順序は間違っています。少なくとも非科学的ですtp_goods に 10000000 件のレコードがあり、cat_id=1 に一致するレコードが 1 つだけある場合
それでは、tp_goods を VT1 にコピーする最初のステップは、多くの時間とスペースを無駄にしないでしょうか?
次のようになります。
仮想テーブル VT を作成します (cat_id、goods_name、goods_price の 3 つの列のみ)
tp_goods を走査し、cat_id=1 に一致するレコードを VT に追加します
VT の内容を出力します
cat_id による tp_goods グループから max_price として cat_id,max(goods_price) を選択する場合
実行プロセスは次のようになります:
仮想テーブル VT を作成します (cat_id、max_price 2 列のみ、cat_id をクラスタークラス、max_price が計算されます)
tp_goods をトラバースし、tp_goods.cat_id の値が VT.cat_id に既に存在する場合はレコードを VT に追加します。次に、対応する max_price を max(goods_price,max_price) に変更します。それ以外の場合は、
を追加して VT の内容を出力します
-----解決策のアイデア------ -- ----------------
1. from 句は、さまざまなデータ ソースからのデータを組み立てるために使用されます。2、where 句は、指定されたデータに基づいてフィルタリングするために使用されます。条件 3. group by sub 文はデータを複数のグループに分割するために使用されます 4. 計算には集計関数を使用します 5. グループをフィルターするには、having 句を使用します 6. すべての式を計算します 7. order by を使用して、すべての結果セットを並べ替えます 上記に遭遇しました 括弧の場合は、当然ながら括弧内の優先順位が上記の通り実行されます。
------ソリューションのアイデア----------------------簡単な質問: 内部と外部は何ですかあなたの体はiPhone 6ですか?
------ソリューションのアイデア----------------------特に「高パフォーマンス」MySQL をチェックしました" (第 2 版) では、投稿者が言及したクエリ配列に関する関連する記述が見つかりませんでした。次のスクリーンショットが投稿者の助けになれば幸いです。