sqlyog

记一次神奇的sql查询经历,group by慢查询优化(已解决)

痞子三分冷 提交于 2021-02-18 17:35:26
一、问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: 我在测试环境构造了500万条数据,模拟了这个慢查询。 简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。 说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个app_account都会有1000个是重复的值,种类共有5000个。 二、看执行计划 可以看到,group by字段上我是加了索引的,也用到了。 三、优化 说实话,我是不知道该怎么优化的,这玩意还能怎么优化啊!先说下,下面的思路都是没用的。 思路一: 后面应该加上 order by null;避免无用排序,但其实对结果耗时影响不大,还是很慢。 思路二: where条件太复杂,没索引,导致查询慢,但我给where条件的所有字段加上了组合索引,也还是没用 思路三: 既然group by慢,换distinct试试??(这里就是本篇博客里说的神奇的地方了) 卧槽???!!!这是什么情况,瞬间这么快了??!!! 虽然知道group by和distinct有很小的性能差距,但是真没想到,差距居然这么大!!!大发现啊!! 四、你以为这就结束了吗 我是真的希望就这么结束了,那这个问题就很简单的解决了

MySQL 8.0下载与安装图文教程

北城以北 提交于 2021-02-16 19:47:03
?AUf)Atws6=f 1.下载 一、①mysql官网最新版本下载地址: https://dev.mysql.com/downloads/mysql/ ②mysql官网所有版本下载地址: https://downloads.mysql.com/archives/community/ 二、也可以在官网首页如下图进入下载页面 三、 将页面拉到最下面选择选择 操作系统 后,选择要下载的版本点击 Downloads 注:我选择安装的版本为8.0.13。如果不想要最新的版本也可以进Archives页面选择其他版本 四、 点击页面下面的 No thanks, just start my download 开始下载 2.配置环境变量 因为下载的mysql数据库包的格式是zip的,下载完成后直接解压就可以用,但解压后需要进行配置。 首先进行环境变量的配置:右击计算机->属性->高级系统设置->环境变量,选择双击Path,在最后面添加你的mysql bin文件夹的路径 我的目录是:E:\mysql-8.0.13-winx64\bin 3.my.ini 配置文件 在 E:\mysql-8.0.13-winx64 目录下新建一个my.ini的文件 my.ini文件中的内容:(注: 可以直接复制下面的,涉及到存放目录的可以根据自己实际情况做更改 ) # 服务器配置 [mysqld] # 设置3306端口

MySQL 8.0下载与安装图文教程

喜夏-厌秋 提交于 2021-02-16 08:12:48
1.下载 一、①mysql官网最新版本下载地址: https://dev.mysql.com/downloads/mysql/ ②mysql官网所有版本下载地址: https://downloads.mysql.com/archives/community/ 二、也可以在官网首页如下图进入下载页面 三、 将页面拉到最下面选择选择 操作系统 后,选择要下载的版本点击 Downloads 注:我选择安装的版本为8.0.13。如果不想要最新的版本也可以进Archives页面选择其他版本 四、 点击页面下面的 No thanks, just start my download 开始下载 2.配置环境变量 因为下载的mysql数据库包的格式是zip的,下载完成后直接解压就可以用,但解压后需要进行配置。 首先进行环境变量的配置:右击计算机->属性->高级系统设置->环境变量,选择双击Path,在最后面添加你的mysql bin文件夹的路径 我的目录是:E:\mysql-8.0.13-winx64\bin 3.my.ini 配置文件 在 E:\mysql-8.0.13-winx64 目录下新建一个my.ini的文件 my.ini文件中的内容:(注: 可以直接复制下面的,涉及到存放目录的可以根据自己实际情况做更改 ) 1 # 服务器配置 2 [mysqld] 3 # 设置3306端口 4 port

Pandas直接读取sql脚本

牧云@^-^@ 提交于 2021-02-02 21:54:05
小小明:「凹凸数据」专栏作者,Pandas数据处理高手,致力于帮助无数数据从业者解决数据处理难题。 之前有群友反应同事给了他一个几百MB的sql脚本,导入数据库再从数据库读取数据有点慢,想了解下有没有可以直接读取sql脚本到pandas的方法。 01 解析sql脚本文本文件替换成csv格式并加载 我考虑了一下sql脚本也就只是一个文本文件而已,而且只有几百MB,现代的机器足以把它一次性全部加载到内存中,使用python来处理也不会太慢。 我简单研究了一下sql脚本的导出格式,并根据格式写出了以下sql脚本的读取方法。 注意:该读取方法只针对SQLyog导出的mysql脚本测试,其他数据库可能代码需要根据实际情况微调。 读取方法: from io import StringIO import pandas as pd import re def read_sql_script_all (sql_file_path, quotechar= "'" ) -> (str, dict): insert_check = re.compile( r"insert +into +`?(\w+?)`?\(" , re.I | re.A) with open(sql_file_path, encoding= "utf-8" ) as f: sql_txt = f.read() end_pos = -1

Pandas直接读取sql脚本

我是研究僧i 提交于 2021-02-02 20:07:48
之前有群友反应同事给了他一个几百MB的sql脚本,导入数据库再从数据库读取数据有点慢,想了解下有没有可以直接读取sql脚本到pandas的方法。 01 解析sql脚本文本文件替换成csv格式并加载 我考虑了一下sql脚本也就只是一个文本文件而已,而且只有几百MB,现代的机器足以把它一次性全部加载到内存中,使用python来处理也不会太慢。 我简单研究了一下sql脚本的导出格式,并根据格式写出了以下sql脚本的读取方法。 注意:该读取方法只针对SQLyog导出的mysql脚本测试,其他数据库可能代码需要根据实际情况微调。 读取方法: from io import StringIO import pandas as pd import re def read_sql_script_all (sql_file_path, quotechar= "'" ) -> (str, dict): insert_check = re.compile( r"insert +into +`?(\w+?)`?\(" , re.I | re.A) with open(sql_file_path, encoding= "utf-8" ) as f: sql_txt = f.read() end_pos = -1 df_dict = {} while True : match_obj = insert

一次神奇的 SQL 慢查询经历,细节决定成败!

倖福魔咒の 提交于 2021-01-27 09:54:46
作者:dijia478 来源: https://www.cnblogs.com/dijia478/p/11550902.html 一、问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: 我在测试环境构造了500万条数据,模拟了这个慢查询。 简单来说,就是查询一定条件下,都有哪些用户的,很简单的sql,可以看到,查询耗时为37秒。 说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个app_account都会有1000个是重复的值,种类共有5000个。 二、看执行计划 可以看到,group by字段上我是加了索引的,也用到了。 三、优化 说实话,我是不知道该怎么优化的,这玩意还能怎么优化啊!先说下,下面的思路都是没用的。 思路一: 后面应该加上 order by null;避免无用排序,但其实对结果耗时影响不大,还是很慢。 思路二: where条件太复杂,没索引,导致查询慢,但我给where条件的所有字段加上了组合索引,也还是没用 思路三: 既然group by慢,换distinct试试??(这里就是本篇博客里说的神奇的地方了) 卧槽???!!!这是什么情况,瞬间这么快了??!!! 虽然知道group by和distinct有很小的性能差距,但是真没想到

MySQL(笔记)

杀马特。学长 韩版系。学妹 提交于 2020-12-30 11:34:28
数据库总览 有时候查的数据错乱,可以重启MySQL 关系型数据库 ( SQL ) MySQL , Oracle , SQL Server , SQLite , DB2 , … 关系型数据库通过外键关联来建立表与表之间的关系 非关系型数据库 ( NOSQL )not only Redis , MongoDB , … 非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定 DBMS 数据库管理系统 ( D ata B ase M anagement S ystem ) 数据库管理软件 , 科学组织和存储数据 , 高效地获取和维护数据 MySQL应该算是一个数据库管理系统. 特点 : 免费 , 开源数据库 小巧 , 功能齐全 使用便捷 可运行于Windows或Linux操作系统 可适用于中小型甚至大型网站应用 官网 : https://www.mysql.com/ 安装步骤 1、下载后得到zip压缩包. 2、解压到自己想要安装到的目录,本人解压到的是D:\Environment\mysql-5.7.19 3、添加环境变量:我的电脑->属性->高级->环境变量 选择PATH,在其后面添加: 你的mysql 安装文件下面的bin文件夹 4、编辑 my.ini 文件 ,注意替换路径位置 [mysqld] basedir=D:\Program Files

Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】

痞子三分冷 提交于 2020-11-21 11:03:53
【Bootstrap4前端框架+MySQL数据库】前后端综合实训【10天课程 博客汇总表 详细笔记】 目 录 PowerDesigner软件 5张数据表之间的依赖关系图 设置数据表的自动增长主键 设置timestrap默认值——点击standard checks,在选项卡里设置default值。 设置数据表之间的关系——Reference 创建5张数据表并生成(数据库脚本)sql语句 SQLyog数据库管理软件 修改SQL语句+成功执行(0 errors、0 warnings) 备份数据库的数据 备份数据导出的sql文件 数据表text字段 数据表主键说明 多表连接查询 PowerDesigner软件 大佬博客: PowerDesigner个人使用总结 5张数据表之间的依赖关系图 多对多关系 --> 拆分数据表 不同的用户可以操作不同的栏目,多对多-->拆分数据表-->两个“一对多” logs_info:logs_content——记录操作内容(增删改加、登录信息)。 设置数据表的自动增长主键 设置timestrap默认值——点击standard checks,在选项卡里设置default值。 设置数据表之间的关系——Reference 创建5张数据表并生成(数据库脚本)sql语句 操作步骤:Database -> Generate Database /*=============

SQLyog连接MySQL8.0报2058错误的解决方案

北城余情 提交于 2020-11-15 18:42:03
引言 用SQLyog连接MySQL8.0(社区版:mysql-installer-community-8.0.15.0.msi),出现错误2058(Plugin caching_sha2_password could not be loaded:xxxx),通过查询资料了解了该错误的原因并在本文中提出了该问题的方案。 原因 该错误提示如下图所示: 具体原因:新的MySQL 8.0安装,在初始化数据目录时,将 ‘root’@'localhost’创建帐户,并且该帐户caching_sha2_password默认使用,密码的加密方法发生了改变,因此SQLyog不能正常解析,才报出如上错误。 解决方案 以管理员运行【开始】-【所有程序】-【MySQL】-【MySQL Server 8.0】-【MySQL 8.0 Command Line Client - Unicode】,如下图所示: 键入root账号的密码如下所示. 按照以下sql格式输入命令,其中password是指root账号的密码。 ALTER USER ' root ' @ ' localhost ' IDENTIFIED WITH mysql_native_password BY ' password ' ; 执行该命令,结果为Query OK说明修改成功,如下图所示。 用SQLyog重新连接MySQL,可以成功连接

CentOS 7下载安装MySQL 8.0以及连接虚拟机CentOS 7数据库教程

五迷三道 提交于 2020-11-12 10:56:39
本教程会运用到Xshell 6和Xftp 6,其实一般主要用Xshell 6即可,但是由于写这个教程的时候,我的Xshell 6还未激活,上传不了文件,且Xftp 6相对于字符界面的Xshell 6更贴近已经习惯了Windows系统的我们,所以使用Xftp 6,当然牛逼一点的,直接使用虚拟机也是可以的,可以不借助这些辅助工具。 1. 从官网 https://dev.mysql.com/downloads/mysql/ 上下载MySQL 8.0.22安装包 Select Operating System:选择Red Hat(红帽),因为CentOS 是基于Red Hat(红帽)的 Select OS Version:选择Linux 7,因为我们的CentOS 7对应的就是Linux 7 当然你也可以在Select Operating System中选择Linux - Generic(Linux通用),Select OS Version选择All 然后选择"RPM Bundle",点击 Download 2. 点击"No thanks, just start my download."进行下载,这是不用账号登录的下载方式,你也可以选择先登录再下载 3. 下载好后,双击打开VMware Workstation Pro,选中要使用的虚拟机CentOS 7,点击"开启此虚拟机"