mysql百万数据根据索引查询_mysql创建多列索引查询百万表数据的性能优化经验分享...

最近发现最代码网站中的收到的评论,提到我的,心情被赞的查询异常缓慢,通过nginx日志发现响应时间快的在5s,慢的有13s,终于忍无可忍花时间来解决了。

执行explain之后的截图如下:

5f44669d9023f819b9cfa4031178418d.png可以看到possible_keys中有很多是之前无用的index,并没有按预想的多列索引status,source_user_id,type来查询,于是果断去掉了多余的索引,执行explain后截图:

5f44669d9023f819b9cfa4031178418d.png可以看到虽然用到了status_sourceuserid_type索引,但rows反而更大了,可以想象查询时间还肯定会更慢吧。

于是修改了索引的列顺序为:mysql> alter table javaniu_event drop index status_sourceuserid_type;

Query OK, 0 rows affected (0.19 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table javaniu_event add index sourceuserid_status_type(source_user_id, status, type);

Query OK, 0 rows affected (14.47 sec)

Records: 0 Duplicates: 0 Warnings: 0

执行explain后截图

5f44669d9023f819b9cfa4031178418d.png比上一次的优化降低了一个数量级。

之后研究了下mysql索引的机制,发现多列索引是按建立索引的列的顺序来顺序过滤数据的,所以按event的业务规则来说,肯定是先用户来区分动态,之后再按动态类型,最后再按动态状态来查询,于是最终调整索引顺序为:mysql> alter table javaniu_event drop index sourceuserid_status_type;

Query OK, 0 rows affected (0.14 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table javaniu_event add index sourceuserid_type_status(source_user_id,type,status);

Query OK, 0 rows affected (16.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

执行explain后截图:

5f44669d9023f819b9cfa4031178418d.png可以看到rows比上一次优化降低了一个数量级。

网页点击我收到的评论列表时明显响应要快很多。

平时多总结分享不只是对自己学到的知识的巩固,也是可以和其他技术交流学习的机会,牛牛们可以多静心分享下相关的经验和代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php用到的mysql语句_PHP中常用到的一些MySQL语句_php

在php开发中,经常会使用到mysql语句,下面就为您列举了一些经常使用的MySQL语句,希望对您平时的学习和开发工作能起到些许的作用。MySQL语句显示数据库或表:show databases;//然后可以use database_name;show tables;MySQL语句更改表名:alter …

mysql执行计划性能_MySQL SQL性能分析Explain执行计划

一. 执行计划返回信息详解①. 执行计划所含字段输出列含义id查询标识select_type查询类型table查询涉及的表partitions匹配到的分区信息type连接类型possible_keys可能选择的索引key实际使用的索引key_len实际使用的索引的长度ref和索引进行比较的列rows需要被检索的大致行数fi…

mysql定时作业_mysql 让一个存储过程定时作业的代码(转)

1、在mysql 中建立一个数据库 test1语句:create database test12、创建表examinfocreate table examinfo(id int auto_increment not null,endtime datetime,primary key(id));3 插入数据:insert into examinfo values(‘1‘,‘2011-4-23 23:26:50‘);4 …

table虚线边框_web前端工程师7天0基础到精通(TABLE+CSS制作《互联世纪网》)

项目七 项目实践:TABLECSS制作《互联世纪网》实践目标1、 熟悉CSS属性2、 熟练运用CSS属性控制网页样式3、 熟悉网页制作流程项目简介:通过上一章节的学习,我们了解了CSS样式能更加方便、有效地控制网页结构和布局网页元素,大大提…

mixamo骨骼_mixamo动作库的模型和动作绑定控制器的方法-上集

1.首先从网站下载带调好动作的文件fbx,我们将fbx场景文件转换成c4d场景文件。没转换之前转换之后选择场次,在文件菜单里找到当前场次到新文档!2.我们将模型重置为Tpose方便后续操作,没重置之前模型为k好的动作模式不能使用选中权重…

mysql 101_MySQL 调优/优化的 101 个建议!

原文:http://www.monitis.com/blog/101-tips-to-mysql-tuning-and-optimization/MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相…

数据安全:保护个人隐私和企业机密的关键

在当今数字化时代,数据已经成为了一种宝贵的资源。无论是个人还是企业,都离不开数据的支持。然而,随着数据的不断增长和广泛应用,数据安全问题也日益突出。数据泄露、黑客攻击、网络诈骗等安全事件层出不穷,给个人和企…

python批量跑plsql_python实现自动化报表(Oracle/plsql/Excel/多线程)

# -*- coding: utf-8 -*-# Create time: 2019-10-16# Update time: 2019-11-28# Version: 1.0# Version: 2.0 增加多线程/出错自动重新运行模块# 导入模块import cx_Oracleimport osimport pandas as pdimport pandas.io.sql as sqlimport timeimport openpyxlimport xlwings a…

mysql 配置邮件_SQL 邮件配置篇

exec sp_configure show advanced options,1RECONFIGURE WITHOVERRIDEgoexec sp_configure database mail xps,1RECONFIGURE WITHOVERRIDEgo--2.创建邮件帐户信息EXECmsdb..Sysmail_add_account_spACCOUNT_NAME OCTMamiETL,--邮件帐户名称EMAIL_ADDRESS OCTMamiETL163.com,--发…

python 抽奖 配音乐_抖音上超好听的神曲音乐,Python教你一次性下载

不知道什么时候开始,中国出现了南抖音、北快手的互文格局(东市买骏马,西市买鞍鞯…)。刚才提到了,之前比较喜欢刷抖音,对于我这种佛系程序猿,看网上这些整容妹子基本一个样。喜欢抖音主要是两个初衷,学做菜…

mysql批量写入100万数据_Mysql数据库实践操作之————批量插入数据(100万级别的数据)-阿里云开发者社区...

第一种方法:使用insert into 插入从Redis每次获取100条数据,根据条件去插入到Mysql数据库中:条件:如果当前队列中的值大于1000条,则会自动的条用该方法,该方法每次获取从队列的头部每次获取100掉数据插入到…

mysql多客户端数据不同步_一种多终端设备上的数据同步方法

一种多终端设备上的数据同步方法【技术领域】[0001] 属于移动通信技术领域,特别是涉及基于离网环境下多种移动终端设备之间的数 据同步的方法。 技术背景[0002] 90年代未,数据同步始于有线连接,如MAC机作为数据中心,与终端设备(iP…

oem监控mysql_OEM12c 安装配置MySQL Plug-in用来监控MySQL

Plug-in--注册信息[roottest agent]# /oem/emcli setup -urlhttps://omsdb.localdomain:7301/em -usernamesysmanOracle Enterprise Manager 12c 3.Copyright (c) 1996, 2013 Oracle Corporation and/or its affiliates. All rights reserved.The configuration directory &quo…

怎么利用迭代器写入mysql_range()是什么?为什么不生产迭代器?

本篇文章给大家带来的内容是关于range()是什么?为什么不生产迭代器?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影&#x…

java 流式_Java开发笔记(七十二)Java8新增的流式处理

通过前面几篇文章的学习,大家应能掌握几种容器类型的常见用法,对于简单的增删改和遍历操作,各容器实例都提供了相应的处理方法,对于实际开发中频繁使用的清单List,还能利用Arrays工具的asList方法给清单对象做初始化赋…

java保留二位小数_java使double保留两位小数的多方法 java保留两位小数

复制代码代码如下:mport java.text.DecimalFormat;DecimalFormat df new DecimalFormat("######0.00");double d1 3.23456double d2 0.0;double d3 2.0;df.format(d1);df.format(d2);df.format(d3);3个结果分别为:复制代码代码如下:3.230.002.00java保留两位…

linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行。1.Java程序用MyEclipse打包成可运行的jar包(1)在MyEclipse中选中需要打包的项目,点击右键,选择:Export... 如下图所示&a…

java匿名对象 回收_Java 匿名对象

我们知道一般实例化一个对象的格式,如下:Car car new Car();其中,变量名 car 就是 new Car() 这个对象的名字。car 是引用类型的变量,它的值存放的是对象的引用(或地址),通过 car 这个变量我们就可以间接使用对象。那…

java int 正则表达式_java正则表达式

Java正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。Java正则表达式和Perl的是最为相似的。java.util.regex包主要包括以下三个类:Pattern类&#xf…

mysql.h 动态编译命令_Linux环境编译动态库和静态库总结

对Linux环境动态库和静态库的一些基础知识做一些总结,首先总结静态库的编译步骤。1 先基于.cpp或者.c文件生成对应的.o文件2将几个.o文件 使用ar -cr命令 生成libname.a文件libname.a 为静态库, name 为静态库的名字,可以根据模块功能命名。举…