首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql如何优化慢查询_慢sql优化思路

这篇文章主要是就在公司实习的时候,对SQL优化工作作出的一些整理。 在公司实习的时候,导师分配了SQL慢查询优化的任务,任务是这样的:每周从平台中导出生产数据库的慢查询文件进行分析。...进行SQL优化的手段也主要是修改SQL写法,或者新增索引。 现在从记录项目中的一点点做起。...查询慢的原因都是:引起filesort (5)分析具体的SQL语句 1、两个表选哪个为驱动表,表面是可以以数据量的大小作为依据,但是实际经验最好交给mysql查询优化器自己去判断。...如何优化? 建索引。但是由上面分析可知,要建索引只能在b表的id字段建,不能在a表的id上,mysql利用不上。 这样优化够了吗?还差一些。...该如何进一步优化

3.8K30

Mysql SQL优化

SQL优化规则 第一条: 尽量全值匹配,也就是说尽量使用等于 第二条: 最佳左前缀原则 如果是复合索引,要遵守最佳左前缀原则,指的是从最左侧列开始并且不跳过索引中的列 如果是按顺序使用的索引列,且有最左侧的列...中间有范围查询会导致后面的索引列全部失效,但是本身是有效的 第五条: 尽量使用覆盖索引 尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select * 第六条: 尽量不使用不等于 mysql...pos from staffs where name like '%july%' 第九条: 字符串类型加引号 字符串不加单引号索引失效 解决方式:请加引号【捂脸】 第十条: OR改 UNION效率高 这个SQL...优化有诀窍 听着还挺带劲 最后附上习题一部,不发答案,大家自己瞅瞅,可以答案写评论区,我是全猜对了,你呢 ?...作者:彼岸舞 时间:2020\07\11 内容关于:Mysql 本文来源于网络,只做技术分享,一概不负任何责任

1K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL SQL优化

    # MySQL SQL优化 插入数据 大批量插入数据 主键优化 order by 优化 group by 优化 limit 优化 count 优化 count 用法 update 优化 # 插入数据...在load时,主键顺序插入性能高于乱序插入 # 主键优化 在上一小节,我们提到,主键顺序插入的性能是要高于乱序插入的。 这一小节,就来介绍一下具体的原因,然后再分析一下主键又该如何设计。...# order by 优化 MySQL的排序,有两种方式: Using filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫...优化思路: 一般分页查询时,通过创建 覆盖索引 能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化。...但是当我们在执行如下SQL时。

    1.8K20

    Mysqlsql优化

    Mysqlsql优化 index 1.MySQL的执行过程 2.索引的定义 3.MySQL执行计划explain or desc 4.索引使用/创建规则 5.弊端 6.设计规范 7.SQL建议 1...MySQL 的执行过程 2.索引的定义 3.MySQL执行计划 explain or desc 3.MySQL执行计划 使用 explain 了解并优化执行计划,非常重要; 执行计划的 id select...直接显示表名或者表的别名 由 ID 为 M,N 查询 union 产生的结果 由 ID 为 N 查询产生的结果 执行计划的 type  访问类型,SQL 查询优化中一个很重要的指标...Select tables optimized away:基于索引优化 MIN/MAX 操作或者 MyISAM 存储引擎优化 COUNT(*) 操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即可完成优化...优化表的数据类型,选择合适的数据类型: 原则:更小通常更好,简单就好,所有字段都得有默认值,尽量避免null。

    10510

    Mysql学习-sql优化

    选择优化的数据类型 1)更小的通常更好:一般情况下,尽量使用可以正确存储数据的最小数据类型。...因为如果查询中包含可为NULL的列,对于Mysql来说更难优化。...Mysql索引 Mysql索引为什么会采用B+Tree,需要考虑以下几个问题: 对具体的数据可以快速搜索、如何快速查找区间数据、支持模糊查询、支持分页、支持排序(正序和逆序)。...对于sql优化: 1.通常如果查询中带有or的join时,可以考虑将其变成两个确切的sql进行UNION ALL,此时执行的效率比采用or要高得多。 2....对于多个 join 可以考虑将其分解成多个sql子句,在程序中拼接,此时的效率比join的效率要高。 4. 采用sql的执行计划,对查询慢的sql子句进行优化。 5. 考虑采用延迟关联。

    68210

    mysql优化sql

    今天例行查看日志,发现有个sql在本地查询速度较快,在服务器环境下查询速度较慢,达到了6s之多。说下优化思路,原本事先将子查询优化下,后来排查下,发现是mysql缓存问题。为以后排查问题涨了点知识。...优化sql语句优化mysql配置、一、sql优化优化前SELECTspace_id,max_temp,min_temp,avg_temp,create_time FROM( SELECT space_id...innodb_buffer_pool_size = 3221225472sql查询效率显著提高如果想永久修改,需要修改下mysql的配置文件,我这里就暂时不改了。...C:\ProgramData\MySQL\MySQL Server 5.7\my.ini路径图片修改my.ini搜索 innodb_buffer_pool_size注意:用记事本保存的话,要注意保存的文件的编码...必须是ANSI图片修改后,重启mysql即可。

    1.7K40

    ⑩③【MySQL】详解SQL优化

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ SQL优化 ⑩③【MySQL...】了解并掌握SQL优化 1....插入数据 优化 insert优化: ⚪使用批量插入 ⚪手动提交事务(每次SQL语句执行后事务自动提交,手动提交避免了多次提交,提升效率) ⚪使用主键顺序插入(顺序比乱序速度更快,性能更高) 大批量插入数据...: 如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。...-- 如何建立合适索引:建议使用联合索引,可参考上文的order by优化 5. limit 分页优化 一个常见又非常头疼的问题就是大数据量的分页,如:limit2000000,10,此时需要MySQL

    22340

    MySQL-如何定位慢查询SQL以及优化

    慢查询日志记录慢SQL 定位慢SQL可以通过慢查询日志来查看慢SQL,默认的情况下,MySQL数据库不开启慢查询日志(slow query log),需要手动把它打开 SET GLOBAL slow_query_log...估算找到我们所需的记录,需要读取的行数 filtered 该列是一个百分比,是满足条件的记录数量与我们查询了多少记录数量的比值 extra 该字段包含有关MySQL如何解析查询的其他信息,它一般会出现这几个值...,需要使用profiling,开启profiling参数后,后续执行的SQL语句都会记录其资源开销,包括IO,上下文切换,CPU,内存等等,可以根据这些开销进一步分析当前慢SQL的瓶颈再进一步进行优化...Optimizer Trace分析详情 profile只能查看到SQL的执行耗时,但无法看到SQL真正执行的过程信息,不知道MySQL优化器是如何选择执行计划,这时候,可以使用Optimizer...,可以优化索引 ● 还可以优化SQL语句,比如一些in元素过多问题(分批),深分页问题(基于上一次数据过滤等),进行时间分段查询 ● SQL没办法很好优化,可以改用ES的方式,或者数仓 ● 如果单表数据量过大导致慢查询

    66751

    MysqlSQL优化指北

    概述 在一次和技术大佬的聊天中被问到,平时我是怎么做Mysql优化的?在这个问题上我只回答出了几点,感觉回答的不够完美,所以我打算整理一次SQL优化问题。...要知道怎么优化首先要知道一条SQL是怎么被执行的 ? 首先我们会连接到这个数据库上,这时候接待你的就是连接器。连接器负责跟客户端建立连接、获取权限、维持和管理连接。...接着要做“语法分析”,根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个SQL语句是否满足MySQL语法。...所以SQL优化工作都是优化器的功劳,而我们要做的就是写出符合能被优化优化SQL。...order by性能优化MySQL排序中会用到内存来进行排序,sort_buffer_size,就是MySQL为排序开辟的内存(sort_buffer)的大小。

    97920

    MySQL高级】优化SQL步骤

    ,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,本章将详细介绍在 MySQL优化 SQL 语句的方法。...3.3 explain分析执行计划 通过以上步骤查询到效率低的 SQL 语句后,可以通过 EXPLAIN或者 DESC命令获取 MySQL如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序...show profiles 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。...系统占有的cpu 3.5 trace分析优化器执行计划 MySQL5.6提供了对SQL的跟踪trace, 通过trace文件能够进一步了解为什么优化器选择A计划, 而不是选择B计划。...语句 : select * from tb_item where id < 4; 最后, 检查information_schema.optimizer_trace就可以知道MySQL如何执行SQL

    67222

    【性能优化MySQLSQL剖析(SQL profile)

    分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和session级别来设置。...对于全局级别则作用于整个MySQL实例,而session级别紧影响当前session。该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory等等。...根据这些开销进一步分析当前SQL瓶颈从而进行优化与调整。本文描述了如何使用MySQL profile,不涉及具体的样例分析。...This variable is deprecated in MySQL 5.6.8 and will be removed in a future MySQL release....This variable is deprecated in MySQL 5.6.8 and will be removed in a future MySQL release.

    66740

    Mysql性能优化一:SQL语句性能优化

    这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。...运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化优化,使用索引,避免表搜索,因此将SQL重写成下面这样:  SELECT...46,MySQL查询可以启用高速查询缓存。这是提高数据库性能的有效Mysql优化方法之一。当同一个查询被执行多次时,从缓存中提取数据和直接从数据库中返回数据快很多。...47,EXPLAIN SELECT 查询用来跟踪查看效果  使用 EXPLAIN 关键字可以让你知道MySQL如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。...EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等,等等。

    1.9K21

    MysqlSQL分析及优化

    执行次数多的SQL优先治理 如果有一类SQL高并发集中访问某一张表,应当优先治理。 Mysql执行原理 绿色部分为SQL实际执行部分,可以发现SQL执行2大步骤:解析,执行。...案例 (mysql数据高CPU问题定位和优化) 开启慢查询 ## 开关 slow_query_log=1 ## 文件位置及名字 slow_query_log_file=/data/mysql/slow.log...cpu优化方向 对于MySQL硬件环境资源,建议CPU起步8核开始,SSD硬盘; 索引 ,合理设计表结构,优化SQL。...mysql性能测试优化方向 系统参数:磁盘调度算,SHELL资源限制,numa架构,文件系统ext4,exfs 刷新mysql log相关刷新参数: 临近页(innodb_flush_neighbors...7)BLOB 和 TEXT 类型的列只能创建前缀索引 3、mysql常见sql规范: 1)SQL语句尽可能简单 大SQL语句尽可能拆成小SQL语句,MySQL对复杂SQL支持不好。

    1.7K42

    MySQL Slow Sql优化(面向研发)

    语句 四、SQL优化利器—explain使用 explain模拟优化器执行SQL语句,在5.6以及以后的版本中,除过select,其他比如insert,update和delete均可以使用explain...MySQL中无法利用索引完成排序操作称为“文件排序” --Using temporary:使用了临时表保存中间结果,mysql在查询结果排序时使用临时表。...max操作或者对于MyISAM存储引擎优化count(*),不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化。...五、根据explain执行计划添加索引 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题。...set profiling = 1; show profiles; show profile cpu, block io for query 2; 4、SQL优化: 1)避免左匹配% 2)尽量避免使用子查询

    1.9K31

    Mysql高级5-SQL优化

    ' 内容到新创建的表中,其中tb_user_data.sql中的测试数据如下 houlei@houleideMacBook-Pro Desktop % cat tb_user_data.sql 1,a,...' 内容到新创建的表中   mysql> load data local infile '/Users/houlei/Desktop/tb_user_data.sql' into table tb_user...效率同样比较高   总结: 在分组操作时,可以通过索引来提高效率 分组操作时,索引的使用也满足最左前缀法则 五、limit优化   account_transaction表数据量展示 mysql>...排序钱2000002条记录,但是仅仅需要返回200001-20002的记录,前2000000条记录丢弃,查询排序的代价非常大 查询优化 mysql> select a.* from account_transaction...count的几种用法 count(*):       InnoDB引擎并不会把全部的字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加,mysql 对count(*)做了优化

    33130

    MySql学习笔记(四) - Sql优化

    Sql每天都在查,但是sql优化的边界你了解吗?、在一般的认识里数据库就是一个黑箱,我把sql扔进去,它把结果返回来,至于sql优化貌似很遥远的地方,直到系统好慢的时候才会怀疑sql出了毛病。...那么sql优化都有哪些具体的步骤? 1.通过show status命令了解各种sql执行的频率 show session/global status 可以查询服务器提供的状态信息。...对于事务型应用,可以使用Com_commit和Com_rollback来了解事务的提交和回滚情况,如果回滚比较多那么就说明应用的逻辑存在问题 此外还有Connections(连接mysql的次数)、uptime...(mysql启动的时间)、slow_queries(慢查询的次数)。...正在执行的线程,包含线程的状态,是否锁表等,可以实时的查看sql执行情况,同时对一些锁表的操作进行优化

    56010

    MySQL SQL和索引优化总结

    专栏持续更新中:MySQL详解 首先我们需要知道MySQL主要是从以下3个方面进行优化SQL语句和索引 应用优化(引入缓存、连接池) 配置参数优化 一、SQL语句和索引的优化 当数据量比较大,若SQL...语句写的不合适,会导致SQL的执行效率低,我们需要等待很长时间才能拿到结果 针对性优化的时候,若数据量太大,可通过limit分页 explain分析的时候可能出现以下问题: 没有用索引 用多列索引没有用到第一列...,导致没用到索引 联合查询的大小表设置不合理,导致索引没用上(小表是整表查询,大表才用索引) 多表查询不用in(产生中间表),用外连接替代带in子查询的过程,合理使用索引 二、应用优化 除了优化SQL和索引...缓存的话,也会有一些附带的问题:缓存数据一致性问题,缓存穿透和缓存雪崩等等 三、MySQL Server优化 对于MySQL Server端的优化,主要指的是MySQL Server启动时加载的配置文件...MySQL查询缓存 MySQL的查询缓存是把上一次select的查询结果记录下来放在缓存当中,下一次再查询相同内容的时候,直接从缓存中取出来就可以了,不用再进行一遍真正的SQL查询(在内存中划分一块空间用做缓存的地方

    21750
    领券