4
回答
Mysql表引擎分别为Innodb和Myisam时,同一update语句2倍执行时间差距咨询?
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

表很简单,如下所示:

Create Table: CREATE TABLE `count_t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `count` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100001

另外同样的一个表count_t_myisam,但Engine是Myisam, 均含有同样的100000条记录

为什么同样的update语句, Innodb的表花的时间是Myisam表的两倍呢?

mysql> update count_t set count=count+1;
Query OK, 100000 rows affected (0.48 sec)
Rows matched: 100000  Changed: 100000  Warnings: 0

mysql> update count_t_myisam set count=count+1;
Query OK, 100000 rows affected (0.23 sec)
Rows matched: 100000  Changed: 100000  Warnings: 0

 Innodb多出来的时间,花到哪儿去了呢? 有什么工具可以看它们两者背后的区别吗?

mysql> explain  update count_t set count=count+1 \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: count_t
         type: index
possible_keys: NULL
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 100464
        Extra: NULL
1 row in set (0.00 sec)

mysql> explain  update count_t_myisam set count=count+1 \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: count_t_myisam
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 100000
        Extra: NULL
1 row in set (0.00 sec)

似乎Innodb表用到了索引, 但是update操作时如何禁止索引呢?


举报
zgw06629
发帖于3年前 4回/954阅
顶部