位置: 编程技术 - 正文

分析MySQL中优化distinct的技巧(mysql常见优化手段)

编辑:rootadmin

推荐整理分享分析MySQL中优化distinct的技巧(mysql常见优化手段),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql常见优化手段,mysql有哪些优化措施,mysql常见优化方式,mysql有哪些优化措施,mysql有哪些优化措施,mysql常用优化方案,mysql的优化方案,mysql常用优化方案,内容如对您有帮助,希望把文章链接给更多的朋友!

有这样的一个需求:select count(distinct nick) from user_access_xx_xx;

这条sql用于统计用户访问的uv,由于单表的数据量在G以上,即使在user_access_xx_xx上加上nick的索引,

通过查看执行计划,也为全索引扫描,sql在执行的时候,会对整个服务器带来抖动;

执行一次sql需要花费.s,已经非常的慢了

现在需要换一种思路来解决该问题:

我们知道索引的值是按照索引字段升序的,比如我们对(nick,other_column)两个字段做了索引,那么在索引中的则是按照nick,other_column的升序排列:

我们现在的sql:select count(distinct nick) from user_access;则是直接从nick1开始一条条扫描下来,直到扫描到最后一个nick_n,

分析MySQL中优化distinct的技巧(mysql常见优化手段)

那么中间过程会扫描很多重复的nick,如果我们能够跳过中间重复的nick,则性能会优化非常多(在oracle中,这种扫描技术为loose index scan,但在5.1的版本中,mysql中还不能直接支持这种优化技术):

所以需要通过改写sql来达到伪loose index scan:

Sql中先选出不同的nick,最后在外面套一层,就可以得到nick的distinct值总和;

最重要的是在子查询中:select distinct(nick) 实现了上图中的伪loose index scan,优化器在这个时候的执行计划为Using index for group-by ,

需要注意的是mysql把distinct优化为group by,它首先利用索引来分组,然后扫描索引,对需要的nick只扫描一次;

两个sql的执行计划分别为:

优化写法:

原始写法:

通过实例认识MySQL中前缀索引的用法 今天在测试环境中加一个索引时候发现一警告root@test::altertablearticledropindexind_article_url;QueryOK,rowsaffected(.sec)Records:Duplicates:0Warnings:0root@test

Suse Linux 中MySql安装与配置步骤 安装环境:操作系统:suseLinux数据库:MySQL5.0.希望能认识更多高手,互相学习讨论技术!首先发泄一下再这,网上看了N多安装mysql的文章,大多大同

MySQL中对于not in和minus使用的优化 优化前:selectcount(t.id)fromtesttwheret.status=1andt.idnotin(selectdistincta.app_idfromtest2awherea.type=1anda.rule_idin(,,))::laojiu@planPLAN_TABLE_OUTPUT————————

标签: mysql常见优化手段

本文链接地址:https://www.jiuchutong.com/biancheng/347329.html 转载请保留说明!

上一篇:对MySQL子查询的简单改写优化(mysql子查询效率如何)

下一篇:通过实例认识MySQL中前缀索引的用法

  • 完税证明能作为理赔依据吗
  • 出口货物离岸价格
  • 普票需要填写全部开票信息吗
  • 企业的净资产包括实收资本吗
  • 企业所得税营业收入是含税还是不含税
  • 计提上一年度企业所得税会计分录
  • 会务费账务处理
  • 应交房产税通过应交税费核算吗
  • 预缴增值税时可抵扣吗
  • 采购退货红字发票怎么写
  • 支票遗失声明书范文
  • 变更银行手机号需要去银行吗
  • 金税三期个人所得税税率
  • 甲供材料工程如何办理结算
  • 装修期间用电
  • 房地产企业开发资质查询
  • 自产货物用于捐赠的会计处理
  • 会计准则规定
  • 有形动产租赁服务和不动产租赁服务的区别
  • 出让和转让的有何区别
  • 用U盘安装苹果系统
  • 如何恢复微信语言聊天
  • 以前年度进项税额转出会计分录怎么做
  • win10电脑如何设置锁屏时间
  • 虎杖的养殖方法和用量
  • win8电脑系统还原
  • 家具有限公司
  • 企业车间承包合同的法律效力
  • linux 临时修改环境变量
  • 临时工的工资需要缴纳工会经费吗
  • 不开票收入如何纳税申报
  • php如何实现伪静态
  • 蒂内河畔圣艾蒂安小镇,法国阿尔卑斯省 (© CAVALIER Michel/hemis.fr/Alamy Stock Photo)
  • 图书管理系统的软件结构图
  • php登录注册整套源码
  • uniapp获取手机通讯录
  • 应收账款未计提怎么处理
  • 以前多计提的工资怎么办
  • 投资收益如何记账
  • 职工探亲如何报差旅费
  • 11月资产负债表
  • 应收账款提坏账准备的方法
  • 金税四期的基本理念
  • 会计中应收账款属于什么科目
  • 将自产产品用于管理部门 增值税
  • 视同内销账务处理怎么做?
  • 农产品收购发票如何抵扣进项税
  • 增值税年末结转的会计处理
  • 公司参赛获奖交啥税
  • sql server 修改
  • sqlserver排序规则怎么看
  • CentOS7下MySQL5.7安装配置方法图文教程(YUM)
  • winXP系统还能用吗
  • ubuntu怎么样
  • docker untagged
  • os x10.11el capitan beta5更新了什么?os x10.11el capitan beta5下载地址
  • linux安装有哪几种方式
  • freebsd安装pkg
  • csinject.exe是什么程序的进程 csinject进程是安全的吗
  • 因以下文件的损坏或者丢失,windows无法启动hal.dll
  • centos最小化安装配置网络
  • linux0.01编译
  • 如何关闭win8快速启动
  • centos搭建服务器
  • cocos-2dx
  • field.set方法
  • css-div
  • python中OrderedDict的使用方法详解
  • jquery mobile ui
  • jquery 单页应用
  • android 测试工具
  • 基于arcgis的python编程
  • windows pytorch
  • 原生js实现promise
  • jquery添加文字
  • python socket用法
  • jquery插件大全
  • python程序解读举例
  • 税收征管法规定税务机关在税款征收中可以采取哪些措施
  • 商住两用房出售要交契税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设