• 优化接口性能


    基本场景设定: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行,但是查询速度差不多(原因待确定)。

     

  • 相关阅读:
    B00009 C语言分割字符串库函数strtok
    B00009 C语言分割字符串库函数strtok
    I00026 计算数根
    I00026 计算数根
    I00025 寻找循环数
    Magic Stones CodeForces
    Continued Fractions CodeForces
    AtCoder Beginner Contest 116 D
    Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)
    Choosing The Commander CodeForces
  • 原文地址:https://www.cnblogs.com/momoweiduan/p/13943830.html
Copyright © 2020-2023  润新知