• 兵团第十二师三坪农场“民族团结一家亲”让亲戚越走越亲 2019-09-17
  • 彼得·林姆伯格(Peter Limbourg) 2019-09-13
  • 阿富汗政府和塔利班停火3天 双方士兵拥抱问候 2019-09-13
  • 2017安徽省政务微信十强排行榜发布 2019-09-10
  • 【新时代幸福美丽新边疆】美图赏析:大自然的“奥秘” 2019-09-10
  • 2018山西省学生跳绳联赛太原站落幕 103队1600人参赛创新高 2019-09-09
  • 《对话·寓言2047》第二季在京首演 张艺谋玩起艺术与科技的碰撞 2019-09-07
  • 《人民日报》北平版和《北平解放报》 2019-09-05
  • 以朝鲜民主主义人民共和国为例,难道特金会是由朝鲜工人、农民主导的?[哈哈] 2019-09-05
  • 端午节,跟随习近平找寻中华民族“精气神” 2019-08-30
  • 科学家发现奇异低光细菌 未来或有助于人类移居火星 2019-08-29
  • 美媒:中国“造城”模式成世界新标? 2019-08-27
  • 静待电动汽车时代的到来 2019-08-25
  • 世界杯魔咒应验 A股3000点命悬一线 2019-08-23
  • 红枣-热门标签-华商生活 2019-08-23
  • 数据库

    香港白小姐免费资枓冫:MySQL优化之覆盖索引的使用

    查看测试表结构:

    mysql> show create table im_message \G
    *************************** 1. row ***************************
           Table: im_message
    Create Table: CREATE TABLE `im_message` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `from_id` varchar(40) COLLATE utf8_bin NOT NULL,
      `from_type` tinyint(1) NOT NULL DEFAULT '0',
      `to_id` varchar(40) COLLATE utf8_bin NOT NULL,
      `to_type` tinyint(1) NOT NULL DEFAULT '0',
      `content` varchar(2048) COLLATE utf8_bin DEFAULT '',
      `create_date` bigint(20) NOT NULL,
      `update_date` bigint(20) NOT NULL,
      `message_id` varchar(40) COLLATE utf8_bin NOT NULL,
      `is_sync` tinyint(1) DEFAULT '0' COMMENT '是否同步   0 未同步    1  已同步',
      `is_read` tinyint(1) DEFAULT '0' COMMENT '是否已读   0 未读    1  已读',
      `is_withdraw` tinyint(1) DEFAULT '0' COMMENT '是否撤回  0 未撤  1  已撤',
      `is_lastest` tinyint(1) DEFAULT '0' COMMENT '是否是最新回话消息 0 不是 1是',
      PRIMARY KEY (`id`),
      UNIQUE KEY `uidx_message_id` (`message_id`),
      KEY `idx_date` (`create_date`),
      KEY `idx_from_id` (`from_id`),
      KEY `idx_to_id` (`to_id`),
      KEY `idx_is_sync` (`is_sync`),
      KEY `idx_update_date` (`update_date`),
      KEY `idx_fid_tid` (`from_id`,`to_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=13264365 DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC
    1 row in set (0.00 sec)

    查看SQL执行效果: 

    select max(id) as "id" from im_message WHERE from_id='bd29879279c44672a2fdffcb8428b4d1' or to_id='bd29879279c44672a2fdffcb8428b4d1' group by from_id, to_id;
    |  8547247 |
    |  7152294 |
    |  6897129 |
    | 12874034 |
    | 10011290 |
    |  8027198 |
    |  7852741 |
    |  9960496 |
    |  6059399 |
    | 10860981 |
    |  9963172 |
    | 13253445 |
    +----------+
    27827 rows in set (0.91 sec)

    查看执行计划:

    mysql> explain select max(id) as “id” from im_message WHERE from_id=’bd29879279c44672a2fdffcb8428b4d1′ or to_id=’bd29879279c44672a2fdffcb8428b4d1′ group by from_id, to_id;

    +—-+————-+————+————+————-+———————————–+———————–+———+——+——–+———-+—————————————————————————————+

    | id | select_type | table      | partitions | type        | possible_keys                     | key                   | key_len | ref  | rows   | filtered | Extra                                                                                 |

    +—-+————-+————+————+————-+———————————–+———————–+———+——+——–+———-+—————————————————————————————+

    |  1 | SIMPLE      | im_message | NULL       | index_merge | idx_from_id,idx_to_id,idx_fid_tid | idx_fid_tid,idx_to_id | 122,122 | NULL | 168680 |   100.00 | Using sort_union(idx_fid_tid,idx_to_id); Using where; Using temporary; Using filesort |

    +—-+————-+————+————+————-+———————————–+———————–+———+——+——–+———-+—————————————————————————————+

    1 row in set, 1 warning (0.00 sec)

    创建覆盖索引: 

    mysql> alter table im_message add index idx_from_id_id(from_id,id);
    Query OK, 0 rows affected (1 min 1.94 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    mysql> alter table im_message add index idx_to_id_id(to_id,id);
    Query OK, 0 rows affected (1 min 9.79 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    重新查看SQL执行效果:

    select max(id) as "id" from im_message WHERE from_id='bd29879279c44672a2fdffcb8428b4d1' or to_id='bd29879279c44672a2fdffcb8428b4d1' group by from_id, to_id;
    |  8547247 |
    |  7152294 |
    |  6897129 |
    | 12874034 |
    | 10011290 |
    |  8027198 |
    |  7852741 |
    |  9960496 |
    |  6059399 |
    | 10860981 |
    |  9963172 |
    | 13253445 |
    +----------+
    27827 rows in set (0.63 sec)

    查看执行计划: 

    mysql> explain select max(id) as "id" from im_message WHERE from_id='bd29879279c44672a2fdffcb8428b4d1' or to_id='bd29879279c44672a2fdffcb8428b4d1' group by from_id, to_id;
    +----+-------------+------------+------------+-------------+---------------------------------------------------------------+-----------------------------+---------+------+--------+----------+----------------------------------------------------------------------------------------+
    | id | select_type | table      | partitions | type        | possible_keys                                                 | key                         | key_len | ref  | rows   | filtered | Extra                                                                                  |
    +----+-------------+------------+------------+-------------+---------------------------------------------------------------+-----------------------------+---------+------+--------+----------+----------------------------------------------------------------------------------------+
    |  1 | SIMPLE      | im_message | NULL       | index_merge | idx_from_id,idx_to_id,idx_fid_tid,idx_from_id_id,idx_to_id_id | idx_from_id_id,idx_to_id_id | 122,122 | NULL | 162106 |   100.00 | Using union(idx_from_id_id,idx_to_id_id); Using where; Using temporary; Using filesort |
    +----+-------------+------------+------------+-------------+---------------------------------------------------------------+-----------------------------+---------+------+--------+----------+----------------------------------------------------------------------------------------+
    1 row in set, 1 warning (0.00 sec)

    发现优化器选择了新建的两个覆盖索引。 

    创建覆盖索引之后,利用索引的有序性, select max(id)可以快速的取到最大id。

    我还没有学会写个人说明!

    游戏之外网龙的教育生意经

    上一篇

    腾讯财报背后的小秘密:转型路上的未知

    下一篇

    你也可能喜欢

    MySQL优化之覆盖索引的使用

    长按储存图像,分享给朋友

    ITPUB 每周精要将以邮件的形式发放至您的邮箱


    微信扫一扫

    微信扫一扫
  • 兵团第十二师三坪农场“民族团结一家亲”让亲戚越走越亲 2019-09-17
  • 彼得·林姆伯格(Peter Limbourg) 2019-09-13
  • 阿富汗政府和塔利班停火3天 双方士兵拥抱问候 2019-09-13
  • 2017安徽省政务微信十强排行榜发布 2019-09-10
  • 【新时代幸福美丽新边疆】美图赏析:大自然的“奥秘” 2019-09-10
  • 2018山西省学生跳绳联赛太原站落幕 103队1600人参赛创新高 2019-09-09
  • 《对话·寓言2047》第二季在京首演 张艺谋玩起艺术与科技的碰撞 2019-09-07
  • 《人民日报》北平版和《北平解放报》 2019-09-05
  • 以朝鲜民主主义人民共和国为例,难道特金会是由朝鲜工人、农民主导的?[哈哈] 2019-09-05
  • 端午节,跟随习近平找寻中华民族“精气神” 2019-08-30
  • 科学家发现奇异低光细菌 未来或有助于人类移居火星 2019-08-29
  • 美媒:中国“造城”模式成世界新标? 2019-08-27
  • 静待电动汽车时代的到来 2019-08-25
  • 世界杯魔咒应验 A股3000点命悬一线 2019-08-23
  • 红枣-热门标签-华商生活 2019-08-23
  • 香港最准的六肖期 福建快三走势图结果 应用酷下载 白小姐开奖免费下载 诚信星力平台注册送分 qq分分彩计划软件 北京时时放假 四川快乐12直三遗漏 黑龙江福彩快乐前三组 新时时开奖结果360 聚齐乐棋牌 江西快3开奖历史开奖 快乐赛视频播放 快乐10分口诀 生肖开奖记录走势图 老时时开奖结果