MySQL:内联视图与标量子查询
来源:互联网 发布:淘宝官方打折软件 编辑:程序博客网 时间:2024/05/22 10:54
MySQL:内联视图与标量子查询 的问题
SELECT o.order_id, i.order_item_id, i.channel, o.use_online_payed+o.used_balance+o.use_offline_payed+o.need_pay AS total_pay, stock.tax_amount_money*i.quantity AS tax_amount_money, FROM_UNIXTIME(o.create_time,'%H') AS create_time, FROM_UNIXTIME(o.check_time,'%H') AS check_time FROM (SELECT product_spec_id, SUM(tax_stock_price*(good_num+bad_num))/(SUM(good_num)+SUM(bad_num)) AS tax_amount_money FROM `c` GROUP BY product_spec_id) AS stock, a AS o, b AS i WHERE o.order_id = i.order_id AND i.product_spec_id = stock.product_spec_id AND o.check_time>0 AND o.status IN (1,2,3,4) AND o.sub_status NOT IN (9,11) AND o.rejection_status != 3 AND o.parent_order_sn = 0 AND o.check_time BETWEEN 1461427200 AND 1461513599\G+----+-------------+-----------------------+--------+----------------- ---------------------+-----------------+---------+-----------------------+--------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-----------------------+--------+-- ------------------------------------+-----------------+---------+-----------------------+--------+-------------+| 1 | PRIMARY | <derived2> | ALL | NULL | NULL | NULL | NULL | 324542 | || 1 | PRIMARY | i | ref | order_id,order_id_2,product_spec_id | product_spec_id | 4 | stock.product_spec_id | 2 | Using where || 1 | PRIMARY | o | eq_ref | PRIMARY,i_gt_orders_check_time | PRIMARY | 4 | shop_zp.i.order_id | 1 | Using where || 2 | DERIVED | c | index | NULL | psi | 4 | NULL | 342212 | |+----+-------------+-----------------------+--------+---------------------------------------+-----------------+---------+-----------------------+--------+-------------+执行时间4s
不使用from+内联视图方式,改为标量子查询
SELECT o.order_id, i.order_item_id, i.channel, o.use_online_payed+o.used_balance+o.use_offline_payed+o.need_pay AS total_pay, (SELECT SUM(tax_stock_price*(good_num+bad_num))/(SUM(good_num)+SUM(bad_num)) AS tax_amount_money FROM `c` WHERE product_spec_id=i.product_spec_id GROUP BY product_spec_id)*i.quantity AS tax_amount_money, FROM_UNIXTIME(o.create_time,'%H') AS create_time, FROM_UNIXTIME(o.check_time,'%H') AS check_time FROM a AS o, b AS i WHERE o.order_id = i.order_id AND o.check_time>0 AND o.status IN (1,2,3,4) AND o.sub_status NOT IN (9,11) AND o.rejection_status != 3 AND o.parent_order_sn = 0 AND o.check_time BETWEEN 1461427200 AND 1461513599 +----+--------------------+-----------------------+-------+------------------------------------+------------------------+---------+---------------------------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+--------------------+-----------------------+-------+------------------------------------+------------------------+---------+---------------------------+------+-------------+| 1 | PRIMARY | o | range | PRIMARY,i_gt_orders_check_time | i_gt_orders_check_time | 4 | NULL | 385 | Using where || 1 | PRIMARY | i | ref | order_id,order_id_2 | order_id | 4 | shop_zp.o.order_id | 1 | || 2 | DEPENDENT SUBQUERY | c | ref | psi | psi | 4 | shop_zp.i.product_spec_id | 1 | Using where |+----+--------------------+-----------------------+-------+------------------------------------+------------------------+---------+---------------------------+------+-------------+
改写后0.02S
可见,在MySQL中,没有hash情况下,标量子查询还是很有用处的。
0 0
- MySQL:内联视图与标量子查询
- 标量子查询与内联视图哪个效率高?
- 标量子查询和内联视图
- 内联视图、标量子查询、WITH子查询分解的示例
- 优化mysql标量子查询
- MySQL 子查询-分类、标量、列
- 标量子查询
- 标量子查询
- 标量子查询
- 标量子查询
- sql 标量子查询
- 标量子查询
- oracle标量子查询
- 标量子查询改写
- mysql 标量子查询,多表子查询,及其性能测评
- 经典的标量子查询
- 标量子查询SQL改写
- SQL 内联子查询
- svn服务器出现网页能登陆库访问,但tortoise无法登陆
- spark操作hbase
- 不以预测为目的的大数据都是耍流氓
- Java进阶(三十一) Web服务调用
- IOS系列- CALayer
- MySQL:内联视图与标量子查询
- iOS MPMoviePlayerController(已废弃)入门使用(模仿keep未登录)&广告动画开场效果
- MVVM初尝试--UITableView数据Manager思路分享
- 程序猿的笑话!
- iterm终端高亮
- javax.servlet.http.Cookie.setHttpOnly(Z)V
- Hybrid开发简介
- MyEclipse 不能建立Web project ?
- IDEA 15 java -source问题