• 优化接口性能


    基本场景设定:InnoDB引擎,一张单表有 300多万条数据,字段为:id(主键)、name、time、value。

    试验场一:

    -》Mysql语句:SELECT * from gw_yl_real_data where name = '人民广场东街上海路'  

    -》查询结果:查询数据:50261  ;平均耗时:12.479s

    试验场二:

    -》Mysql语句:SELECT * from gw_yl_real_data where name in ('人民广场东街上海路','正源街宝湖路',胜利街明达巷',六盘山路正源街',怀远西路北民大附中') 

    -》查询结果:查询数据:251319;平均耗时:12.528s

    试验场三:

    -》Mysql语句:SELECT * from gw_yl_real_data where name = '人民广场东街上海路' and time = '2020-11-04 05:29:00'

    -》查询结果:查询数据:1;平均耗时:12.327s

    试验场四:

    -》Mysql语句:SELECT * from gw_yl_real_data where name in ('人民广场东街上海路','正源街宝湖路','胜利街明达巷','六盘山路正源街',怀远西路北民大附中') and time = '2020-11-04 05:29:00'

    -》查询结果:查询数据:5;平均耗时:12.467s

    试验场五:使用name建立普通索引

    -》Mysql语句:SELECT * from gw_yl_real_data where name = '人民广场东街上海路' 

    -》查询结果:查询数据:50261;平均耗时:12.626s

    试验场六:使用name + time建立唯一索引

    -》Mysql语句:SELECT * from gw_yl_real_data where name = '人民广场东街上海路'  

    -》查询结果:查询数据:50261;平均耗时:354.092s

    试验场七:使用name + time建立唯一索引

    -》Mysql语句:SELECT * from gw_yl_real_data where name = '人民广场东街上海路' and time = '2020-11-04 05:29:00'

    -》查询结果:查询数据:1;平均耗时:0.032s

    结论:

    1.对比试验一和二、试验三和四可知,查询一个或者多个,使用 in 来查询效率并没有降低。

    2.对比试验三和七可知,建立唯一组合索引后查询速度显著提高。

    3.对比试验一和六可知,不适当的索引反而会拖慢查询速度(原因待确定),试验六中索引被使用,但是查询效率反而极大地降低了。

    4.对比试验一和五可知,普通索引对单表查询速度无用。EXPLAIN 分析试验五,发现使用了索引,并且只扫描了104000行,试验一则扫描了全部的3170076行,但是查询速度差不多(原因待确定)。

     

  • 相关阅读:
    PBE加密 .net 实现
    手把手教你写一个windows服务 【基于.net】 附实用小工具{注册服务/开启服务/停止服务/删除服务}
    fish redux 个人理解
    .net Core 图片验证码 基于SkiaSharp实现
    .net core webapi jwt 更为清爽的认证 ,续期很简单(2)
    js删除数组对象中符合条件的数据
    编译.net .net Core程序 代码,仅做备份
    Mybatis架构相关的知识
    java选择题知识总结大全
    Mybatis详解(二) sqlsession的创建过程
  • 原文地址:https://www.cnblogs.com/momoweiduan/p/13943830.html
Copyright © 2020-2023  润新知