# 如何解决“mysql explain中的rows估算错误”
## 概述
在开发过程中,我们经常会使用`explain`命令来查看SQL语句的执行计划。其中的`rows`字段用于估算查询语句返回的行数,但有时候这个估算会出现错误。本文将介绍如何解决这个问题。
## 流程图
```mermaid
flowchart TD
    A(查看explain结果) --> B(检查索引使用情况)            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-06-27 06:56:06
                            
                                127阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。  --------------------基本语法-------------------- 一.创建存储过程 create procedure sp_name() begin ......... end 二.调用存储过程 1.基本语法:call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-22 20:31:07
                            
                                42阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Mysql Explain Rows 实现流程
## 流程图
```mermaid
flowchart TD
    A[准备工作]
    B[执行查询]
    C[使用 EXPLAIN 查询计划]
    D[解读查询计划]
    E[优化查询]
    A --> B
    B --> C
    C --> D
    D --> E
```
## 1. 准备工作
在开始之前            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-09-26 16:41:18
                            
                                88阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在MySQL性能调试中,常常使用EXPLAIN解释MySQL执行计划,从而用来估算性能耗时。其中,rows用来表示在SQL执行过程中会被扫描的行数,该数值越大,意味着需要扫描的行数,相应的耗时更长。但是需要注意的是EXPLAIN中输出的rows只是一个估算值,不能完全对其百分之百相信,如EXPLAI            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-20 11:38:16
                            
                                539阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            这个rows是mysql认为必须要逐行去检查和判断的记录条数 它只是一个估算值 举个例子来说,假如有一个语句 select * from t where column_a = 1 and column_b = 2;全表假设有100条记录,column_a字段有索引(非联合索引),column_b没有 ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-09-13 15:19:00
                            
                                1342阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            今天同事在处理系统慢SQL时遇到几个疑惑的问题,简单描述如下~【背景铺垫】相关            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-05-14 18:59:09
                            
                                122阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 Explain优化器 【推荐】SQL 性能优化的目标:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts 最好。 说明: consts 单            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-07-17 10:17:13
                            
                                0阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键、聚合函数(SUM 、AVG 等)、常量。我们来看个例子: 我们有 学生班级表(tbl_student_class) 以及 数据如下 : DROP TABLE IF EXISTS tbl_s            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-15 18:21:16
                            
                                60阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            150错误的常见原因如下,并且我以可能性的大小作了排序 已知的原因: 1, 两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10), 那么外键也必须设置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令来查看字段的大小,因为一些查询浏览器有时候把 int(10) 和int(11) 都显示为integer。另外,你还必须确定两个字段是否一个为            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-09 19:49:41
                            
                                21阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            分析MySQL语句查询性能的方法:1、慢查询:超过指定时间的SQL语句查询2、使用 EXPLAIN 输出执行计划今天就带领大家看下explain的            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-06-28 18:46:22
                            
                                83阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            explain语法有两种用法:1.EXPLAINtbl_name2.EXPLAIN[EXTENDED]SELECTselect_optionsidSELECT识别符。这是SELECT的查询序列号select_typeSELECT类型,可以为以下任何一种:SIMPLE:简单SELECT(不使用UNION或子查询)PRIMARY:最外面的SELECTUNION:UNION中的第二个或后面的SELECT            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-06-10 09:19:12
                            
                                429阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.select_type: /* select_type 使用 SIMPLE */explain select * from tb_shop_order where id='20160329257032899';/* select_type 使用 PRIMARY --最外面的select sele            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-08-10 16:35:26
                            
                                99阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            (一)id列: (二)select_type列:数据读取操作的操作类型 1、SIMPLE:简单的select 查询,SQL中不包含子查询或者UNION。 2、PRIMARY:查询中包含复杂的子查询部分,最外层查询被标记为PRIMARY 3、SUBQUERY:在select 或者WHERE 列表中包含 ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-05-02 23:37:42
                            
                                149阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
               mysql中EXPLAIN 的作用
    
        (一)id列:(1)、id 相同执行顺序由上到下
mysql> explain  
    -> SELECT*FROM tb_order tb1
    -> LEFT JOIN tb_product tb2 ON tb1.tb_product_id = tb2.id
    -> LEFT JOIN             
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-04-29 13:43:21
                            
                                186阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            :persister 链接:http://www.blogjava.net/persister/archive/2008/10/27/236813.html 在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-07-09 19:50:00
                            
                                68阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            原文出处: persister 原文出处: persister 在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-07-06 16:11:00
                            
                                64阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。常见SQL错误用法            
                
         
            
            
            
            为什么链表?--博客园老牛大讲堂因为表与表之间有关系,而且查询时需要两张表的某些数据。链表的前提是:表与表之间必须设置主外键吗?不是的,其实表与表之间不需要设置主外键关系,用数据库语句就可以实现链表查询,删除,修改,增加等操作。为什么要设置主外键呢?通常我们看到表与表之间有关系,常常设置主外键。为什么?其实这样做是为了规范!假设一个不了解你表结构的人,都能够任意的修改你的外键。那这个表就不严谨了。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-19 22:34:30
                            
                                15阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # 如何实现“mysql查询所有表的记录数 rows 错误”
## 一、整体流程
以下是解决该问题的步骤:
```mermaid
gantt
    title 查询所有表的记录数 rows
    section 查询所有表的记录数
    获取数据库中所有表名       :done, firstTask, 2022-01-01, 1d
    循环遍历每个表格         :do            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-03-07 06:42:20
                            
                                185阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              在今后的开发过程中,有些情况我们根本没有权限去做一些处理异常,或者说我们根本处理不了,干脆就不处理。为了解决这样的问题,并且还能保证程序正常运行的情况下,Java针对这种情况,提供了另外一个解决异常的方式:throws抛出(跟在方法后面)。throws格式:throws异常类名在方法小括号后面,大括号之前参考代码1:import java.text.ParseException;
i            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-17 00:16:51
                            
                                82阅读
                            
                                                                             
                 
                
                                
                    