广告
返回顶部
首页 > 资讯 > 数据库 >浅谈MySQL之select优化方案
  • 497
分享到

浅谈MySQL之select优化方案

MySQLselect优化 2022-05-31 17:05:40 497人浏览 泡泡鱼
摘要

目录生活中的例子慢查询如何去优化countlimit最大值最小值min&max生活中的例子 我们是否看到过在公司中许多查询语句都是select * xxxx 心中的想法肯定是,别人写了select

目录
  • 生活中的例子
  • 慢查询
  • 如何去优化
    • count
    • limit
    • 最大值最小值min&max

生活中的例子

我们是否看到过在公司中许多查询语句都是select * xxxx

心中的想法肯定是,别人写了select *,那我写吧,省去了不少麻烦事儿

慢查询

  • 首先去思考,最基本的,是否我们使用的数据库插查询语句存在了访问的数据太多
  • 其实大部分性能低的查询往往都可以通过减少访问的数据量来优化的
  • 因为select * 会给服务器带来额外的I/O、内存和cpu的消耗

数据库中慢查询开销的三个指标

  • 相应时间
  • 扫描的行数
  • 返回的行数

如果走了索引


select * from stu where id = 1;

索引会优化查询,只返回十条数据
如果没有id索引,那么就会预估访问上百上千行数据

tips: 通过Mysql中的EXPLaiN命令去查看的其中rows对应的行数

其实最好的情况就是在存储引擎层过where滤掉不匹配的记录
其次好的情况是覆盖索引命中扫描,在服务器层where滤掉不匹配的记录,不需要回表查询
最的情况是从数据表返回数据,然后再过滤不满足条件的记录

如何去优化

使用索引覆盖,把我们需要的列都放在索引中,这样我们就避免了回表去查询
可以单独分出来表

重构查询(可以进行大的查询化解成小的查询)

举例: 如count、limit、max()

count

count 最好的优化就是增加汇总表,因为count不可避免需要扫描大量的行

limit

limit我们在做分页的时候很常用,如下面代码


select id from stu order by id limit 1000,20;

这条语句会查询1020条数据然后丢掉前一千条返回1000~1020的二十条数据
那么优化的最好的方式就是走索引,这样limit查询查就能变成已知位置的查询

最大值最小值min&max

首先我们试想如果走的是主键索引,那么我们去查询的时候第一个的值就是我们要返回的最小值
我们也可以走主键索引以后,用limit去控制数据量,这样就实现了min()函数的效果,从而替换掉min


select id 
from stu 
use index(primay) where address = 'bj' limit 1;

这样就尽可能扫描了少的记录数

最后我们来做两道题放松一下吧


找出`Employee` 表中第二高的薪水(Salary)
+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+
结果
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+
解答

select max(Salary)  SecondHighestSalary
from Employee 
where  salary < (select max(salary)
from Employee)

查找 `Person` 表中所有重复的电子邮箱。
+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+

结果

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

解答
select Email from Person 
group by Email 
having count(Email) >= 2;

到此这篇关于浅谈mysql之select优化方案的文章就介绍到这了,更多相关Mysql select优化内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

您可能感兴趣的文档:

--结束END--

本文标题: 浅谈MySQL之select优化方案

本文链接: https://www.lsjlt.com/news/10454.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 浅谈MySQL之select优化方案
    目录生活中的例子慢查询如何去优化countlimit最大值最小值min&max生活中的例子 我们是否看到过在公司中许多查询语句都是select * xxxx 心中的想法肯定是,别人写了select...
    99+
    2022-05-31
    MySQL select优化
  • 浅谈MySQL大表优化方案
    背景 阿里云RDS FOR MySQL(MySQL5.7版本)数据库业务表每月新增数据量超过千万,随着数据量持续增加,我们业务出现大表慢查询,在业务高峰期主业务表的慢查询需要几十秒严重影响业务 方案概述 一、数据库...
    99+
    2022-05-14
    MySQL大表优化 MySQL 表优化
  • 怎么浅谈数据库优化方案
    今天就跟大家聊聊有关怎么浅谈数据库优化方案,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。下面给大家分析了数据库优化方案,具体内容如下1. 利用表分区...
    99+
    2022-10-19
  • 浅谈mysql使用limit分页优化方案的实现
    Mysql limit分页语句用法 与Oracle和MS SqlServer相比,mysql的分页方法简单的让人想哭。 --语法: SELECT * FROM table LIMIT [offs...
    99+
    2022-10-18
  • 怎么浅谈MySQL优化
    本篇文章给大家分享的是有关怎么浅谈MySQL优化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。从上而下我们能做的事情越来越多.数据库配置pag...
    99+
    2022-10-19
  • 浅谈Android性能优化之内存优化
    目录1、Android内存管理机制1.1 Java内存分配模型1.2 Dalvik和ART介绍1.3 为什么要进行内存优化2、Java内存回收算法2.1判断Java中对象是否存活的算...
    99+
    2022-11-12
  • MySQL select count(*)计数很慢优化方案
    目录前言1. MyISAM存储引擎计数为什么这么快?2. 能不能手动实现统计总行数3. InnoDB引擎能否实现快速计数4. 四种计数方式的性能差别前言 在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总...
    99+
    2022-08-11
    MySQLselectcount(*)计数慢优化 MySQL优化
  • MySQL之优化SELECT语句
    MySQL之优化SELECT语句 文章目录 MySQL之优化SELECT语句摘要:引言:1. MySQL性能提成优化概述2. WHERE子句优化3. 范围优化4. 哈希联接优化5. 储存引擎下的优化6. 索引条件下推优化7....
    99+
    2023-08-16
    mysql 数据库 原力计划
  • 浅谈MySQL索引优化分析
    为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。助你了解索引,分析索...
    99+
    2022-10-18
  • 浅谈PHP性能优化之php.ini配置
    目录内存文件上传会话缓冲输出真实路径缓存内存 默认设置 memory_limit = 128M 单个进程可使用的内存最大值,这个值的设定可以从以下几点考虑: 应用的类型...
    99+
    2022-11-12
  • 浅谈MySQL与redis缓存的同步方案
    目录一、方案1(UDF)演示案例二、方案2(解析binlog)Canal开源技术三、附加本文介绍MySQL与Redis缓存的同步的两种方案 方案1:通过MySQL自动同步刷新R...
    99+
    2022-11-11
  • 浅谈Java高并发解决方案以及高负载优化方法
    目录1、HTML静态化2、图片服务器分离3、数据库集群和库表散列4、缓存5、镜像6、负载均衡1)硬件四层交换2)软件四层交换一、高并发高负载类网站关注点之数据库需要注意的是:二、高并...
    99+
    2022-11-12
  • Mysql之高可用方案浅析
    在工程项目中,系统应用的高可用性越来越重要,业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用,数据层高可用中常见的有关系型数据库mysql的高可用、非关系型NoSQl数据库redis的...
    99+
    2023-09-06
    mysql 高可用 双机热备
  • 故障分析 | MySQL 优化案例 - select count(*)
    作者:xuty 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文关键字:count、SQL、二级索引 一、故事背景 项目组联系我说是有一张 500w 左右的表做select ...
    99+
    2015-08-04
    故障分析 | MySQL 优化案例 - select count(*)
  • 浅谈MySQL 亿级数据分页的优化
    目录背景分析数据模拟1、创建两个表:员工表和部门表2、创建两个函数:生成随机字符串和随机编号3、编写存储过程,模拟500W的员工数据4、编写存储过程,模拟120的部门数据5、建立关键字段的索引,这边是跑完数据之后再建...
    99+
    2022-05-27
    MySQL 亿级数据分页 MySQL 分页优化
  • 浅谈C++高并发场景下读多写少的优化方案
    目录概述分析双缓冲工程实现上需要攻克的难点核心代码实现简单说说golang中双缓冲的实现相关文献来源:https://www.cnblogs.com/longbozhan/p/157...
    99+
    2022-11-12
  • 浅谈mysql 树形结构表设计与优化
    前言 在诸多的管理类,办公类等系统中,树形结构展示随处可见,以“部门”或"机构"来说,接触过的同学应该都知道,最终展示到页面的效果就是层级结构的那种,下图随机列举了一个部门的树型结构...
    99+
    2022-11-12
  • 浅说MySQL优化方法
    在数据库的优化上我们有两个方面,一方面是安全,另一方面则是性能.         安全 ,就是要保证数据的可持续性;         性能,则说的就是数据的高性能访问; 2.优化方法         1)选取最适用的字段属性   ...
    99+
    2016-12-06
    浅说MySQL优化方法
  • 浅谈Mysql大数据分页查询解决方案
    目录1.简介2.分页插件使用3.sql测试与分析3.1 limit现象分析3.2 解决之道4 测试时走过的坑4.1 百万数据内容都一样4.2 写sql时,把"77"...
    99+
    2022-11-13
  • 浅谈Redis跟MySQL的双写问题解决方案
    目录写在前面三种读写缓存策略Cache-AsidePattern(旁路缓存模式)Read-Through/Write-Through(读写穿透)WriteBehindPattern(...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作