数据库版本:5.6.16

update in 修改数据,结果执行时间过慢,一直不出结果。

SQL语句及执行计划如下:

UPDATE erp_order_extra SET last_time=123123123123  
WHERE order_id IN (SELECT eo.order_id FROM jiuxianweb.erp_order eo WHERE eo.channel_ordersn='18161116045333705180');

+----+--------------------+-----------------+-----------------+-------------------------+---------+---------+------+---------+------------------------------+
| id | select_type        | table           | type            | possible_keys           | key     | key_len | ref  | rows    | Extra                        |
+----+--------------------+-----------------+-----------------+-------------------------+---------+---------+------+---------+------------------------------+
|  1 | PRIMARY            | erp_order_extra | index           | NULL                    | PRIMARY | 4       | NULL | 7528568 | Using where; Using temporary |
|  2 | DEPENDENT SUBQUERY | eo              | unique_subquery | PRIMARY,channel_ordersn | PRIMARY | 4       | func |       1 | Using where                  |
+----+--------------------+-----------------+-----------------+-------------------------+---------+---------+------+---------+------------------------------+

两张表的索引结构如下:
mysql> show index from erp_order_extra;
+-----------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table           | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| erp_order_extra |          0 | PRIMARY    |            1 | extra_id    | A         |     7528568 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order_extra |          1 | order_id   |            1 | order_id    | A         |     7528568 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order_extra |          1 | action_id  |            1 | action_id   | A         |           2 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order_extra |          1 | split_type |            1 | split_type  | A         |           4 |     NULL | NULL   |      | BTREE      |         |               |
+-----------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

mysql> show index from erp_order;
+-----------+------------+-------------------------------+--------------+---------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table     | Non_unique | Key_name                      | Seq_in_index | Column_name         | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------+------------+-------------------------------+--------------+---------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| erp_order |          0 | PRIMARY                       |            1 | order_id            | A         |     8902636 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          0 | channel_ordersn               |            1 | channel_ordersn     | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          0 | channel_ordersn               |            2 | channel_id          | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | ordersn                       |            1 | order_sn            | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | printBatch                    |            1 | printBatch          | A         |     2225659 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | indexes_order_status          |            1 | order_status        | A         |        5324 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | indexes_order_status          |            2 | depart              | A         |       14198 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | indexes_order_status          |            3 | channel_id          | A         |       53309 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | orderstatus                   |            1 | order_status        | A         |          18 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | orderstatus                   |            2 | shipping_time       | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | addtime                       |            1 | add_time            | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | consignee                     |            1 | consignee           | A         |     2967545 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | consignee                     |            2 | verify_status       | A         |     2967545 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | consignee                     |            3 | add_time            | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | channeluser                   |            1 | channel_id          | A         |       14131 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | channeluser                   |            2 | verify_status       | A         |       34912 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | channeluser                   |            3 | user_id             | A         |     4451318 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | mobile                        |            1 | mobile              | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | extension_id                  |            1 | extension_id        | A         |       38707 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | self_id                       |            1 | self_id             | A         |         864 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | extension_code                |            1 | extension_code      | A         |        3487 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | tel                           |            1 | tel                 | A         |     2225659 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | order_amount                  |            1 | order_amount        | A         |       53955 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | invoice_no                    |            1 | invoice_no          | A         |     8902636 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | standard_time                 |            1 | standard_time       | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | shipping_time                 |            1 | shipping_time       | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | confirm_time                  |            1 | confirm_time        | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | pay_time                      |            1 | pay_time            | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | ware_id                       |            1 | ware_id             | A         |         110 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | admin_id                      |            1 | admin_id            | A         |        1936 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | userid                        |            1 | user_id             | A         |     2967545 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | shipping_id                   |            1 | channel_id          | A         |       18131 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | shipping_id                   |            2 | shipping_id         | A         |       74188 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | shipping_id                   |            3 | user_id             | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | shipping_id                   |            4 | verify_status       | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | shipping_id                   |            5 | add_time            | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | ind_channel_orderid_erp_order |            1 | channel_orderid     | A         |     4451318 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | index_erp_order_shipping_time |            1 | shipping_time       | A         |     8902636 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | ind_original_id_erp_order     |            1 | original_id         | A         |      890263 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | idx_ChangeTime                |            1 | ChangeTime          | A         |       45654 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | restorestock_status           |            1 | restorestock_status | A         |           4 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | index_temp                    |            1 | order_status        | A         |        3697 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | index_temp                    |            2 | is_range            | A         |        5915 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | index_temp                    |            3 | islock              | A         |        7394 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | index_temp                    |            4 | verify_status       | A         |        9614 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | index_temp                    |            5 | invoice_no          | A         |     8902636 |     NULL | NULL   |      | BTREE      |         |               |
| erp_order |          1 | index_ShopSn                  |            1 | ShopSn              | A         |          26 |     NULL | NULL   | YES  | BTREE      |         |               |
| erp_order |          1 | index_SellerSn                |            1 | SellerSn            | A         |          24 |     NULL | NULL   | YES  | BTREE      |         |               |
+-----------+------------+-------------------------------+--------------+---------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

通过update join 去优化 update in的查询使用效率:

原SQL:
UPDATE erp_order_extra SET last_time=123123123123  
WHERE order_id IN (SELECT eo.order_id FROM jiuxianweb.erp_order eo WHERE eo.channel_ordersn='18161116045333705180');

JOIN SQL:
update erp_order_extra a inner join erp_order b on a.order_id=b.order_id set last_time=123123123123 where b.channel_ordersn='18161116045333705180';

执行计划:
+----+-------------+-------+------+-------------------------+-----------------+---------+-----------------------+------+--------------------------+
| id | select_type | table | type | possible_keys           | key             | key_len | ref                   | rows | Extra                    |
+----+-------------+-------+------+-------------------------+-----------------+---------+-----------------------+------+--------------------------+
|  1 | SIMPLE      | b     | ref  | PRIMARY,channel_ordersn | channel_ordersn | 153     | const                 |    1 | Using where; Using index |
|  1 | SIMPLE      | a     | ref  | order_id                | order_id        | 4       | jiuxianweb.b.order_id |    1 | NULL                     |
+----+-------------+-------+------+-------------------------+-----------------+---------+-----------------------+------+--------------------------+

mysql update join优化update in查询效率的更多相关文章

  1. MySQL 使用JOIN优化子查询

    1.数据准备 mysql> select * from student; +----+--------+----------+---------+-------------+ | id | na ...

  2. MYSQL通过索引优化数据库的查询

    #转载请联系 索引是什么? 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的位置信息. 更通俗的说,数据库索引好比是一本书前面的目录,能加快数据 ...

  3. [saiku] 优化多维度查询效率

    1.优化查询精度 优化原因:当维度过多时,查询很复杂,效率较慢.因此看能否通过优化sql的方式来提高查询效率. 代码跟踪查看(维度多余3时查询条件里面有in,优化不用in关键字) public abs ...

  4. MySQL时间设计 int timestamp datatime 查询效率性能比较

    在数据库设计的时候,我们经常会需要设计时间字段,在MYSQL中,时间字段可以使用int.timestamp.datetime三种类型来存储,那么这三种类型哪一种用来存储时间性能比较高,效率好呢?飘易就 ...

  5. mysql关于char和varchar的查询效率问题

    看了好多资料都说 varchar(size) 可变长度的字符值,节省空间,查询效率低 char(size) 固定长度的字符值,浪费空间,查询效率高 但是实际测试  char(100)   varcha ...

  6. mysql中存储字段类型的查询效率

    检索性能从快到慢的是(此处是听人说的): 第一:tinyint,smallint,mediumint,int,bigint第二:char,varchar第三:NULL 解释(转载): 整数类型1.TI ...

  7. 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率

    tbl_direct_pos_201506 表有 190 万数据.DDL: CREATE TABLE `tbl_direct_pos_201506` ( `acq_ins_code` char(13) ...

  8. MySql的join(连接)查询 (三表 left join 写法)

    1.内连接:将两个表中存在连结关系的字段符合连接条件的记录形成记录集 Select A.name,B.name from A inner join B on A.id=B.id和 Select A.n ...

  9. MySql采用range分区可提升查询效率

    简介: RANGE分区基于一个给定的连续区间范围,早期版本RANGE主要是基于整数的分区.在5.7版本中DATE.DATETIME列也可以使用RANGE分区,同时在5.5以上的版本提供了基于非整形的R ...

随机推荐

  1. DDoS攻击与防范策略

    DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式 ...

  2. RabbitMQ学习笔记(6)----RabbitMQ 持久化和非持久化

    持久化:将交换机或队列数据保存到磁盘,服务器宕机或重启之后依然存在. 非持久化:将交换机或队列的数据保存到内存中,服务器宕机或重启之后数据将不存在. 在RabbitMQ中也提供了持久化和非持久化方式. ...

  3. vc++如何创建程序-设置断点-函数的覆盖,c++的多态性

    ---恢复内容开始--- 如何设置断点小笔记 将光标移动到你想设置断点的地方,按一下F9键即可,或者你可以用鼠标左键点击小手图标. CommentOut多行注释 函数的覆盖是在父类与子类之间的,函数的 ...

  4. JS 马托货物

    大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配? <!DOCTYPE html> <html> <head> < ...

  5. Scalable Web Architecture and Distributed Systems

    转自:http://aosabook.org/en/distsys.html Scalable Web Architecture and Distributed Systems Kate Matsud ...

  6. vue-cli 中eslint代码检查之过滤指定文件

    在需要过滤的文件头部末尾分别添加:/* eslint-disable */,/* eslint-disable no-new */

  7. 第n个质数

    //注:for循环之后第三个式子总会操作一遍. #include <iostream> using namespace std; int main() { int n; while (ci ...

  8. 【CodeForces 271D】Good Substrings

    [链接] 我是链接,点我呀:) [题意] [题解] 字典树 我们可以两重循环(i,j) 来枚举所有的子串 即i=1,j=1,2,3... i=2,j = 2,3,4,.. 于是我们在i变化的时候(就是 ...

  9. ZOJ 2315 New Year Bonus Grant

    New Year Bonus Grant Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Or ...

  10. net--技术栈(大图)