美文网首页
数据库表优化分析

数据库表优化分析

作者: engineer_tang | 来源:发表于2022-04-29 11:53 被阅读0次

    1. 准备数据环境

    1.1 建表

    CREATE TABLE `t_test_group` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `group_name` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '组名',
      `create_by` bigint(20) DEFAULT NULL COMMENT '创建人',
      `code` varchar(40) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '编码',
      `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
    

    1.2 造数据

    先造一些基础数据,然后批量造,批量造使用如下语句:

    INSERT INTO `t_test_group`(`group_name`, `create_by`, `code`)
    select `group_name`, `create_by`,UUID()  from t_test_group;
    
    image.png

    最终造了300万条数据,如下图


    image.png

    2. 查询分析

    2.1 使用主键查询

    select * from t_test_group where id= 300000;
    
    image.png
    查询使用时间,达到了0.021S,速度非常快,使用主键查询还是很有优势的。
    image.png

    2.1 使用非主键查询

    image.png

    使用非主键查询耗时都在3S左右,相比使用主键查询慢很多,相差141倍左右。

    2.2 给非主键字段添加索引

    image.png

    通过给非主键字段添加索引后,查询达到了0.05S左右,速度快了60倍,但和使用主键相比,还是慢了1倍。

    2.3 导致索引失效的关键字

    2.3.1 关键字"like"

    前后都加‘%’的情况:


    image.png

    使用关键字like查询效率非常低,

    只加后'%':

    image.png

    2.3.2 关键字"in"

    image.png

    使用关键字IN查询效率很快,说明此时用到了索引,IN不会导致索引失效;另外,3个位置一起查的速度和单个查的速度几乎一样,所以能一起查就尽量一起查。

    相关文章

      网友评论

          本文标题:数据库表优化分析

          本文链接:https://www.haomeiwen.com/subject/fiqsyrtx.html