首页 / PHP / select的执行顺序有关问题
select的执行顺序有关问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了select的执行顺序有关问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2626字,纯文字阅读大概需要4分钟。
内容图文
![select的执行顺序有关问题](/upload/InfoBanner/zyjiaocheng/227/121ff4e1240a4d5b802c47d400798a2b.jpg)
本帖最后由 php_way 于 2014-12-20 09:17:09 编辑 一张商品表tp_goods:
mysql> select * from tp_goods;
+----+-----------------------+-------------+--------------+--------+
| id | goods_name | goods_price | market_price | cat_id |
+----+-----------------------+-------------+--------------+--------+
| 1 | 锤子手机t1白色版32G | 1998.00 | 2488.00 | 1 |
| 2 | 联想E431笔记本 | 4029.00 | 4998.50 | 2 |
| 3 | mysql数据库深入浅出 | 29.80 | 36.30 | 4 |
| 4 | 苹果6 plus新加坡版 | 2998.00 | 6299.00 | 1 |
| 5 | OSA女装羽绒服2014新款 | 538.50 | 1510.00 | 3 |
+----+-----------------------+-------------+--------------+--------+
根据网上资料
mysql> select cat_id,goods_name,goods_price from tp_goods where cat_id=1;
先执行from操作,得到虚拟表VT1 ——> 然后执行where操作,筛选出cat_id=1的所有行,得到虚拟表VT2。此时的列,还是tp_goods表中所有的列 ——>最后执行 select 操作,此时列是 cat_id, goods_name, goods_price的列,结果返回。
-----------------------------------------------------------------------
mysql> select cat_id,max(goods_price) as max_price from tp_goods group by cat_id;
问题:
1. 这条语句又是如何执行的,group by 和 max函数是同时执行的吗?
2. group by 和 select 又是谁先执行?
------解决思路----------------------
1.group by 優先
2.group by 優先
where > group by > 聚合函數 > select
------解决思路----------------------
你理解的执行顺序是错误的,至少是不科学的
如果 tp_goods 有 10000000 条记录,而符合 cat_id=1 的只有一条
那么你的第一步的抄写 tp_goods 到 VT1 不就浪费了大量时间和空间了吗?
所以应该是:
建立虚拟表 VT(只有 cat_id,goods_name,goods_price 3列)
遍历 tp_goods 将符合 cat_id=1 的记录追加到 VT 中
输出 VT 的内容
对于 select cat_id,max(goods_price) as max_price from tp_goods group by cat_id
执行的过程应该是:
建立虚拟表 VT(只有 cat_id, max_price 2列,并标识 cat_id 为聚类, max_price 为计算)
遍历 tp_goods 将记录追加到 VT 中,方法是如果 tp_goods.cat_id 的值在 VT.cat_id 中已存在。则修改对应的 max_price 为 max(goods_price,max_price),否则追加
输出 VT 的内容
------解决思路----------------------
1.from子句用来组装不同数据源的数据2,where子句用于基于指定条件的筛选3.group by 子句用来将数据划分为多个分组4,使用聚集函数进行计算5.使用having子句对分组进行筛选6.计算所有表达式7.使用order by 对所有结果集进行排序
遇到上面括号的情况,当然是按照括号内部再如上述优先级执行。
------解决思路----------------------
跑个题:你那表里的 苹果6 是真的么?
------解决思路----------------------
特意去翻查了《高性能MySQL》(第二版),没找到楼主说讲的查询顺序的相关描述。希望以下截图能给楼主一些帮助。
内容总结
以上是互联网集市为您收集整理的select的执行顺序有关问题全部内容,希望文章能够帮你解决select的执行顺序有关问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。