我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL百分位数计算如何进行优化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL百分位数计算如何进行优化

小编给大家分享一下MySQL百分位数计算如何进行优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

主要是采用存储过程,在中间计算结果中,增加了一个索引

原来的SQL

  1. select t5.query_time,t5.ts,t2.v from (

  2.     select query_time,total,v, floor(1+(total-1)*v) rn

  3.     from (

  4.          select query_time,count(*) total from t group by query_time

  5.     ) t3, (select 0.71 v,1 seq union all select 0.81,2 union all select 0.91,3) t4

  6. )

  7. t2 inner join (

  8.     select

  9.     query_time,

  10.     case when @gid=query_time then @rn:=@rn+1 when @gid:=query_time then @rn:=1 end rn,

  11.     ts

  12.     from (

  13.         select * from t ,(select @gid:='',@rn:=0) vars order by query_time,ts

  14.     ) t1

  15. ) t5 on (t2.query_time=t5.query_time and t2.rn=t5.rn )



改进为存储过程

  1. drop procedure p;

  2. delimiter $$

  3. create procedure p()

  4. begin

  5.     drop table if exists tmp_result;

  6.     

  7.     create temporary table tmp_result(

  8.         query_time date,

  9.         rn int,

  10.         ts float,

  11.         key(query_time,rn)

  12.     ) engine =memory;

  13.     

  14.     insert ignore into tmp_result

  15.     select

  16.     query_time ,

  17.     case when @gid=query_time then @rn:=@rn+1 when @gid:=query_time then @rn:=1 end rn,

  18.     ts

  19.     from (

  20.         select * from t ,(select @gid:='',@rn:=0) vars order by query_time,ts

  21.     ) t1 ;


  22.     select t5.query_time,t5.ts,t2.v from (

  23.         select query_time,total,v, floor(1+(total-1)*v) rn

  24.         from (

  25.              select query_time,count(*) total from t group by query_time

  26.         ) t3, (select 0.71 v,1 seq union all select 0.81,2 union all select 0.91,3) t4

  27.     )

  28.     t2 inner join tmp_result t5 on (t2.query_time=t5.query_time and t2.rn=t5.rn );

  29. end $$


  30. delimiter ;


  31. call p

使用存储过程 一般 11秒 左右

以上是“MySQL百分位数计算如何进行优化”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL百分位数计算如何进行优化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用C++进行算法优化?

如何使用C++进行算法优化?概述:在计算机科学领域,算法优化是提高算法效率和性能的关键过程。使用C++编写算法的一个重要方面是了解如何优化算法来减少时间和空间复杂度。本文将介绍一些可用的技术和策略,帮助开发者在C++中实现高效的算法。1.选
如何使用C++进行算法优化?
2023-11-04

如何在MySQL中进行SQL优化

在MySQL中进行SQL优化的方法有很多,以下是一些常见的方法:使用索引:确保表中经常查询的列上有索引,以加快查询速度。可以使用EXPLAIN语句分析查询执行计划,查看是否在索引上进行了扫描。避免使用SELECT *:只查询需要的列,避免
如何在MySQL中进行SQL优化
2024-04-09

数据库如何进行优化

这篇文章主要介绍了数据库如何进行优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据库优化的方式:1、选取最适用的字段属性;2、使用连接来代替子查询;3、使用联合来代替手动
2023-06-14

如何在Python中进行并行计算和分布式计算

如何在Python中进行并行计算和分布式计算随着计算机技术的不断发展和硬件性能的提升,利用多核处理器进行并行计算和分布式计算已成为提高程序性能的重要手段之一。而Python作为一门简洁易用且功能强大的编程语言,也提供了丰富的库和工具来支持并
2023-10-22

ntfs硬盘如何进行整数的分区计算

本篇文章给大家分享的是有关ntfs硬盘如何进行整数的分区计算,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。到底整数分区会得到整数的容量结果?分区计算方法:较早时间的计算方法为:
2023-06-14

如何实现MySQL底层优化:执行计划分析和优化技巧

实现MySQL底层优化:执行计划分析和优化技巧引言在数据库应用程序的开发和运维中,针对MySQL数据库进行底层优化是非常重要的。MySQL执行计划分析和优化技巧可以帮助开发人员和运维人员提升数据库的性能和稳定性,本文将介绍如何实现MySQL
如何实现MySQL底层优化:执行计划分析和优化技巧
2023-11-08

计算机网络中网站如何进行代码层的优化

这篇文章将为大家详细讲解有关计算机网络中网站如何进行代码层的优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、如何在head层进行优化1、目前title在SEO中的占比已经不是非常重要了,只要选择合适
2023-06-10

如何进行Linux性能分析和优化

如何进行Linux性能分析和优化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言一般互联网的项目都是部署在linux服务器上的,如果linux服务器出了问题,那么咱们平时
2023-06-15

MySQL进行大数据量分页的优化技巧分享

优化MySQL大数据量分页技巧:采用索引优化、分段查询、缓存结果、优化WHERE子句、使用分页优化函数、分表分片、利用分布式系统、异步分页。其他技巧包括优化SQL查询、调整服务器配置、监控性能等。
MySQL进行大数据量分页的优化技巧分享
2024-04-02

编程热搜

目录