SQL优化准则禁用select *
使用select count(*) 统计行数
尽量少运算
尽量避免全表扫描,如果可以,在过滤列建立索引
尽量避免在where子句对字段进行null判断
尽量避免在where子句使用!= 或者<>
尽量避免在where子句使用or连接
尽量避免对字段进行表达式计算
尽量避免对字段进行函数操作
尽量避免使用不是复合索引的前缀列进行过滤连接
尽量少排序,如
转载
2023-08-21 10:25:39
90阅读
读懂MySQL执行计划
前言 在之前的面试过程中,问到执行计划,有很多童鞋不知道是什么?甚至将执行计划与执行时间认为是同一个概念。今天我们就一起来了解一下执行计划到底是什么?有什么用途?
执行计划是什么? 执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。在MySQL中使用
转载
2023-11-04 21:26:52
130阅读
实际项目开发中,由于我们不知道实际查询的时候数据库里发生了什么事情,数据库软件是怎样扫描表、怎样使用索引的,因此,我们能感知到的就只有sql语句运行的时间,在数据规模不大时,查询是瞬间的,因此,在写sql语句的时候就很少考虑到性能的问题。但是当数据规模增大,如千万、亿的时候,我们运行同样的sql语句时却发现迟迟没有结果,这个时候才知道数据规模已经限制了我们查询的速度。所以,查询优化和索引也就显得很
执行计划能告诉我们什么? 当我们的系统上线后数据库的记录不断增加,之前写的一些SQL语句或者一些ORM操作效率变得非常低。我们不得不考虑SQL优化,SQL优化大概是这样一个流程:1.定位执行效率低的SQL语句(定位),2.分析为什么这段SQL执行的效率比较低(分析),3.最后根据第二步分析的结构采取优化措施(解决)。而EXPLAIN命令的作用就是帮助我们分析SQL的执行情况,属于第二步。
转载
2023-08-09 22:25:23
85阅读
SQL优化作为DBA日常主要工作内容,分析SQL的执行计划,是必须要掌握的知识点。执行计划体现了SQL在数据库中的执行方式,SQL语句按照什么样的方式执行,是由优化器决定的。达梦数据库也是一样,SQL语句是由优化器设计执行方式的。达梦数据库提供了2个命令来进行分析SQL的执行计划,分别为explain和explain for,下面我们分别进行介绍。1、使用EXPLAIN分析执行计划达梦数据库提供e
转载
2023-06-19 17:24:58
292阅读
一、创建索引需要关注什么?1、关注基数列唯一键的数量;比如性别,该列只有男女之分,所以性别列基数是2;2、关注选择性列唯一键与行数的比值,这个比值范围在0~1之前,值越小越好; 其实,选择性列唯一键与行数的比值,只要列值区分度越高,这个比值就会相对越小3、where like关键字的前面使用%会全表扫描,不走索引 4、禁止使用select,建议使用select <字段…&
目录1 执行计划是什么2 在mysql中查看执行计划2.1 准备数据2.2 查看执行计划3 详细说明执行计划结果各个字段的含义3.1 id3.2 select_type3.3 table3.4 type3.5 possible_keys3.6 key3.7 key_len3.8 ref3.9 rows4.0 Extra1 执行计划是什么
? 在Oracle performance tuning guide中,对执行计划顺序的描述是最右最上最先执行,然后父步骤执行,也就是最右边的步骤最先执行,如果同等级,那么最上边的最先执行,然后执行其父步骤(文档原文:The execution order in EXPLAIN PLAN output begins with? 在Oracle performance tuning guide中,对
转载
2023-10-07 19:51:41
83阅读
MYSQL执行计划顺序原则上是:在所有组中,id值越大,优先级越高,越先执行,id如果相同,可以认为是一组,从上往下顺序执行做执行计划之前,要了解下表统计信息情况:mysql.innodb_table_stats、innodb_index_stats 上述执行计划执行顺序 derived2(1)-->FLIGHTS(1)-->NULL(2) 输出字段说明:
id
目录1. 概述2. 执行计划使用2.1.执行计划详解2.1.1. 执行计划-ID 2.1.2.执行计划select_type2.1.3.执行计划-table2.1.4.执行计划-type 2.1.5.执行计划possible_key和key2.1.6.执行计划key_len2.1.7.执行计划ref2.1.8.执行计划rows2.1.9.执行计划Extra1. 概述在平时的开发
转载
2023-08-11 15:56:50
48阅读
SQL优化准则禁用select *使用select count(*) 统计行数尽量少运算尽量避免全表扫描,如果可以,在过滤列建立索引尽量避免在where子句对字段进行null判断尽量避免在where子句使用!= 或者<>尽量避免在where子句使用or连接尽量避免对字段进行表达式计算尽量避免对字段进行函数操作尽量避免使用不是复合索引的前缀列进行过滤连接尽量少排序,如果可以,建立索引尽量
转载
2023-10-20 20:31:19
30阅读
介绍 本文介绍了执行计划的不同类型的操作,我们不会讨论应该使用或不使用哪个操作,因为本文只讨论操作的定义。如果您是一个执行计划的初学者,那么请阅读上一篇关于SQL执行计划基本概念篇。 现在,当我们知道了执行计划的类型以及如何获得执行计划的统计信息时,理解执行计划和统计信息的每一个单独输出的含义是非常重要的,这样我们才能更好地查询并提高性能。让我们来理解执行计划的操作。 下面是SQL执行计
转载
2023-09-23 16:58:00
327阅读
1、EXPLAIN介绍[root@VM_0_5_centos ~]# mysqldumpslow -a /var/log/mariadb/slow_query_log.txt
Reading mysql slow query log from /var/log/mariadb/slow_query_log.txt
Count: 4 Time=21.46s (85s) Lock=0.00s (
转载
2023-08-01 16:59:29
100阅读
一、explain简介explain是MySQL一款查看SQL语句的执行计划的命令,使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。帮助分析你的查询语句或是表结构的性能瓶颈。官方解释: 该EXPLAIN语句提供有关MySQL如何执行语句的信息。 EXPLAIN为SELECT语句中使用的每个表返回一行信息 。它按照MySQL在处理语句时读取它们
MySQL源码解析之执行计划MySQL执行计划介绍MySQL执行计划代码概览MySQL执行计划总结一、MySQL执行计划介绍在MySQL中,执行计划的实现是基于JOIN和QEP_TAB这两个对象。其中JOIN类表示一个查询语句块的优化和执行,每个select查询语句(即Query_block对象)在处理的时候,都会被当做JOIN对象,其定义在sql/sql_optimizer.h。QEP_TAB是
序言本篇主要目的有二:1、看懂t-sql的执行计划,明白执行计划中的一些常识。2、能够分析执行计划,找到优化sql性能的思路或方案。如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博文给你:SqlServer性能检测和优化工具使用详细 ,sql语句的优化分析,T-sql语句查询执行顺序。执行计划简介1、什么是执行计划?大哥提交的sql语句,数据库查询优化器,经过分析生成多个数据
目录什么是执行计划?如何获取执行计划?执行计划结果分析idselect_typetabletype(重要)possible_keyskey(重要)key_lenrowsExtra(重要)什么是执行计划?执行计划 是指一条 SQL 语句在经过 MySQL 查询优化器 的优化会后,具体的执行方式。执行计划通常用于 SQL 性能分析、优化等场景。通过 EXPLAIN 的结果,可以了解到如数据表的查询顺序
转载
2023-08-05 00:46:22
52阅读
简介MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如:EXPLAIN SELECT * from user_info WHERE id < 300;准备
一、如何查看执行计划MySQL 使用 explain + sql 语句查看 执行计划,该执行计划不一定完全正确但是可以参考。以这条sql为例SELECT * FROM `dy_push_source` where hotel_id = '60255778'执行计划: 二、执行计划字段说明1.select_type查询数据的操作类型SIMPLE简单查询PRIMARY最外层查询SU
转载
2023-08-07 19:07:05
133阅读
缘由:
优化sql,顾此记录一下,以便温习之用。
前置:
sql执行过程:客户端 -> 连接器 -> 分析器 (或查询缓存 - > end) -> 优化器 -> 执行器 -> 存储引擎
转载
2023-07-13 06:38:39
219阅读