mysql优化--explain--结果参数--02

2023-11-08

mysql优化–explain–结果参数–02


1、数据准备

 
 
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course`  (
  `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键id,自增涨',
  `name` varchar(20) DEFAULT NULL COMMENT '课程名称',
  `teacher_id` int(0) NULL DEFAULT NULL COMMENT '教师ID',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `index_teacher_id`(`teacher_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 COMMENT = '课程表';

 
INSERT INTO `course` VALUES (1, '语文', 1);
INSERT INTO `course` VALUES (2, '数学', 2);
INSERT INTO `course` VALUES (3, '英语', 3);
INSERT INTO `course` VALUES (4, '历史', 4);

 
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score`  (
  `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键id,自增涨',
  `student_id` int(0) NULL DEFAULT NULL COMMENT '学生ID',
  `course_id` int(0) NULL DEFAULT NULL COMMENT '课程ID',
  `score` int(0) NULL DEFAULT NULL COMMENT '分数',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `index_student_id`(`student_id`) USING BTREE,
  INDEX `index_course_id`(`course_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 COMMENT = '分数表';

 
INSERT INTO `score` VALUES (1, 1, 1, 90);
INSERT INTO `score` VALUES (2, 1, 2, 60);
INSERT INTO `score` VALUES (3, 1, 3, 80);
INSERT INTO `score` VALUES (4, 1, 4, 100);
INSERT INTO `score` VALUES (5, 2, 4, 60);
INSERT INTO `score` VALUES (6, 2, 3, 50);
INSERT INTO `score` VALUES (7, 2, 2, 80);
INSERT INTO `score` VALUES (8, 2, 1, 90);
INSERT INTO `score` VALUES (9, 3, 1, 90);
INSERT INTO `score` VALUES (10, 3, 4, 100);
INSERT INTO `score` VALUES (11, 4, 1, 40);
INSERT INTO `score` VALUES (12, 4, 2, 80);
INSERT INTO `score` VALUES (13, 4, 3, 80);
INSERT INTO `score` VALUES (14, 4, 5, 100);

 
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键id,自增涨',
  `name` varchar(20) DEFAULT NULL COMMENT '名称',
  `student_no` varchar(20) DEFAULT NULL COMMENT '学生编号',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `index_student_no`(`student_no`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 COMMENT = '学生表';

 
INSERT INTO `student` VALUES (1, '小明', '20200001');
INSERT INTO `student` VALUES (2, '小红', '20200002');
INSERT INTO `student` VALUES (3, '小张', '20200003');
INSERT INTO `student` VALUES (4, '小李', '20200004');

 
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (
  `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键id,自增涨',
  `name` varchar(20) DEFAULT NULL COMMENT '教师名称',
  `teacher_no` varchar(20) DEFAULT NULL COMMENT '教师编号',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `index_teacher_no`(`teacher_no`) USING BTREE,
  INDEX `index_name`(`name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 COMMENT = '教师表';

 
INSERT INTO `teacher` VALUES (1, '王老师', 'T2010001');
INSERT INTO `teacher` VALUES (2, '张老师', 'T2010002');
INSERT INTO `teacher` VALUES (3, '全老师', 'T2010003');
INSERT INTO `teacher` VALUES (4, '赵老师', 'T2010004');

 


 

2、id

  1. 代表执行select子句或操作表的顺序
  2. id值越大,优先级越高,越先被执行,如果是子查询,id的序号会递增
  3. id相同,执行顺序由上至下
案例
explain 

select c1.* from course c1 left join teacher t1 on c1.teacher_id = t1.id

UNION

select c2.* from course c2 right join teacher t2 on c2.teacher_id = t2.id;
 

在这里插入图片描述

3、select_type

  1. 表示查询中每个select子句的类型
  2. 主要用于区别普通查询,联合查询,子查询等复杂查询

3.1、simple

  1. 简单的select查询
  2. 查询中不包含子查询或union查询
案例
EXPLAIN 
SELECT c1.* 
	
FROM
	course c1,
	score s1,
	teacher t1 
WHERE
	c1.id = s1.course_id
	AND c1.teacher_id = t1.id;

在这里插入图片描述

3.2、primary

  1. 最外层的SELECT
    1. 查询中若包含任何复杂的子部分,最外层查询则被标记为primary
案例
EXPLAIN 

SELECT s1.*  
FROM
	score s1
WHERE
	course_id = (
	
		SELECT c1.id  
		FROM 	course c1  
		WHERE teacher_id =( 
		
			SELECT id 
			FROM teacher  t
			WHERE id = 2 ));
	
	 

在这里插入图片描述

3.3、subquery

  1. 子查询中的第一个SELECT,结果不依赖于外部查询
案例
EXPLAIN 

SELECT 	s1.*  
FROM score s1
	 
WHERE
	s1.course_id = (
	SELECT 	c1.id 
	FROM course c1
	WHERE
		c1.teacher_id = ( 
		
			SELECT t1.id 
			FROM teacher t1
			WHERE t1.id = 2 ));
	
	 

在这里插入图片描述

3.4、dependent subquery

子查询中的第一个SELECT,结果依赖于外部查询

案例
EXPLAIN 

SELECT 	s1.*  
FROM score s1
	 
WHERE
	s1.course_id = (
	SELECT 	c1.id 
	FROM course c1
	WHERE
		c1.teacher_id = 2 
		and s1.course_id>c1.id 
		)
		
		 
	 

在这里插入图片描述

3.5、derived

  1. 在FROM列表中包含的子查询被标记为DERIVED(衍生)
  2. mysql会递归这些子查询,把结果放在临时表中

3.6、union

  1. union的第二个或后面的SELECT语句
    1. 若union包含在from子句的子查询中,外层select将被标记为derived
案例

EXPLAIN 

SELECT id  FROM teacher 

union

select id FROM course
	 

在这里插入图片描述

3.7、dependent union

  1. union的第二个或后面的SELECT语句,取决于外面的查询
案例

EXPLAIN 
SELECT c1.*  
FROM course c1   
WHERE c1.id IN ( 
			SELECT c2.id   FROM course c2  WHERE  c2.id = 1 
			UNION  
			SELECT 	c3.id  FROM 	course c3  WHERE 	c3.id = 2
			)
	
	

在这里插入图片描述

3.8、union result

union的结果

在这里插入图片描述

4、table

  1. 显示一行的数据时关于哪张表的

5、type(连接类型)

  1. 描述了找到所需数据使用的扫描方式。
  2. 性能从好到坏,依次如下(NULL>system>const>eq_ref>ref>range>index>All)
  3. 一般情况下,得至少保证达到range级别,最好能达到ref
  4. 单独查询—性能从好到坏

5.1、NULL

  1. MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,举例如下
    1. 从一个索引列里选取最小值可以通过单独索引查找完成。
查看执行计划
explain select min(id) from course;

在这里插入图片描述

5.2、system

  1. 表只有一行记录
  2. 这是const类型的特例,非常难验证

5.3、const

const扫描的条件为:

  1. 命中主键(primary key)或者唯一(unique)索引
  2. 被连接的部分是一个常量(const)值
  3. 表示通过索引一次就找到了目标
    1. 因为只匹配一行数据,所以效率很快
      1. 如将主键置于where条件中,mysql就能将该查询转换为一个常量
查看执行计划
explain select * from teacher where teacher_no = 'T2010001';

teacher_no是唯一索引,连接部分是常量1
这类扫描效率极高,返回数据量少,速度非常快。

在这里插入图片描述

5.4、eq_ref

  1. 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,
    1. 可以这样理解:对于前表的每一行(row),后表只有一行被扫描。
  2. 常见于主键或唯一索引扫描
    1. 简单来说,就是多表连接中使用primary key或者 unique key作为关联条件
  3. 发生的环境
    1. join查询
    2. 等值连接
    3. 命中主键(primary key)或者非空唯一(unique not null)索引
查看执行计划
EXPLAIN 

SELECT c1.*  
FROM course c1
LEFT JOIN teacher t1 ON c1.teacher_id = t1.id;

在这里插入图片描述

5.5、ref

  1. 非唯一性索引扫描
  2. 简单来说:
    1. 表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
    2. 对于前表的每一行(row),后表可能有多于一行的数据被扫描。
  3. 可能出现在join里,也可能出现在单表普通索引里,每一次匹配可能有多行数据返回,虽然它比eq_ref要慢,但它仍然是一个很快的join类型。
查看执行计划
EXPLAIN 

SELECT c1.*  
FROM
	course c1,
	score s1 
WHERE
	c1.id = s1.course_id

course_id为普通非唯一(non unique)索引。

对于前表的每一行(row),后表可能有多于一行的数据被扫描。

在这里插入图片描述

5.6、fulltext

5.7、ref_or_null

如同ref,但可以搜索值是NULL的行。

查看执行计划
EXPLAIN 
SELECT * 
FROM teacher 
WHERE
	NAME = 'xxx' 
	OR NAME IS NULL;

在这里插入图片描述

5.8、index_merge

用了索引合并的优化方法

查看执行计划
EXPLAIN 

SELECT *  
FROM teacher  
WHERE
	id = 1 
	OR teacher_no = 'T2010001'

在这里插入图片描述

5.9、unique_subquery

  1. 该类型替换了下面形式的IN子查询的ref:

    1. value IN (SELECT primary_key FROM single_table WHERE some_expr)
  2. unique_subquery是一个索引查找函数,可以完全替换子查询,效率更高。

5.10、index_subquery

  1. 该联接类型类似于unique_subquery。
  2. 可以替换IN子查询,但只适合下列形式的子查询中的非唯一索引:
    1. value IN (SELECT key_column FROM single_table WHERE some_expr)

5.11、range

  1. 只检索给定范围的行
    1. 如where语句中出现了between,<,>,in等查询
  2. 这种范围扫描索引比全表扫描要好,因为它只需要开始于索引的某一点,而结束于另一点,不用扫描全部索引。
查看执行计划
explain select * from course where id between 1 and 3;

explain select * from course where  id in(1,2,3);

explain select * from course where  id>3;

像上面中的between,in,>都是典型的范围(range)查询。

注意:必须是索引,否则不能批量"跳过"。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.12、index

  1. 全索引扫描
  2. index类型只遍历索引树,这通常比All快,因为索引文件通常比数据文件小
  3. index是从索引中读取,all从硬盘中读取
查看执行计划
explain select id from course; 

在这里插入图片描述

5.13、all

  1. 全表扫描
  2. 最差的一种查询类型
初始化数据

create table t8 (id int ,name varchar(20))engine=innodb;

	insert into t8 values(1,'hwb');
	
	insert into t8 values(2,'zhangsan');
	
	insert into t8 values(3,'xiaoming');
	
create table t9 (id int,age int)engine=innodb;

	insert into t9 values(1,18);
	
	insert into t9 values(2,20);
	
	insert into t9 values(3,30);
	
	insert into t9 values(4,40);
	
	insert into t9 values(5,50);

查看执行计划
explain select * from t8,t9 where t8.id=t9.id;

如果id上不建索引,对于前表的每一行(row),后表都要被全表扫描。

在这里插入图片描述

6、possible_keys

  1. 指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
  2. 如果该列是NULL,则没有相关的索引,那应该怎么优化了?
    1. 可以用有索引的列来替换 where 的条件列。
    2. where 的条件列 创造一个适当的索引

在这里插入图片描述

7、key

  1. 实际使用的索引,必然包含在possible_keys中
  2. 如果为NULL,则没有使用索引。(可能原因包括没有建立索引或索引失效)
  3. 很少的情况下,MYSQL会选择优化不足的索引。这种情况下,要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

在这里插入图片描述

7.1、覆盖索引

  1. 覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行
  2. 换句话说:
    1. select 要查询的字段刚好 在 创建的索引字段的范围内。
      1. 比如:select a1,a2字段,索引的字段[a1,a2,…]

7.2、查询中若使用了覆盖索引,则该索引仅出现在key列表中,possible_keys不会出现

在这里插入图片描述
在这里插入图片描述

8、key_len

在这里插入图片描述

  1. 表示索引字段的最大可能长度,并非实际使用长度
  2. key_len是根据表定义计算而得,不是通过表内检索出的。
  3. 可通过该列计算查询中使用的索引的长度
  4. 在不损失精确性的情况下,长度越短越好。
  5. 如果键是key 是 NULL,则长度为NULL。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9、ref

  1. 显示索引的哪一列被使用了
    1. 简单理解:就是表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
  2. 如果可能的话,最好是一个常数。
  3. 显示使用哪个列或常数与key一起从表中选择行。

在这里插入图片描述

10、rows

  1. 预估出找到目标所需要读取的行数,也就是说,用的越少越好.

在这里插入图片描述

11、Extra

查看执行计划
explain select * from course order by name;

额外信息

11.1、Using filesort(九死一生)

  1. mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。
  2. MySQL中无法利用索引完成的排序操作称为 “Using filesort”

在这里插入图片描述

11.2、 Using temporary(十死无生)

  1. 使用了用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。
  2. 常见于排序order by和分组查询group by
查看执行计划
EXPLAIN 

SELECT course.*  
FROM course LEFT JOIN teacher ON course.teacher_id = teacher.id 
UNION
SELECT course.*  
FROM course RIGHT JOIN teacher ON course.teacher_id = teacher.id;


在这里插入图片描述

11.3、 Using index(发财了)

  1. 表示相应的select操作中使用了覆盖索引
    1. 仅仅使用了索引中的信息,而没有读取表的数据行,效率不错。
  2. 如果同时出现using where,表明索引被用来执行索引键值的查找;
  3. 如果没有同时出现using where,表明索引用来读取数据而非执行查找动作。
查看执行计划
EXPLAIN 

SELECT c1.*  
FROM
	course c1,
	score s1,
	teacher  t1
WHERE
	c1.id = s1.course_id 
	AND c1.teacher_id = t1.id;

在这里插入图片描述

11.4、 Using where

  1. mysql服务器将在存储引擎检索行后再进行过滤。就是先读取整行数据,再按 where 条件进行检查,符合就留下,不符合就丢弃。

在这里插入图片描述

11.5、 Using join buffer

  1. 强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。
    1. 如果出现了这个值,那应该注意,需要添加索引来改进能。
  2. 如果多表join的次数非常多,那么将配置文件中的缓冲区的join buffer调大一些。
查看执行计划
EXPLAIN 
SELECT
	s1.*,
	t1.* 
FROM
	student s1,
	teacher t1 

在这里插入图片描述

11.6、 impossible where

where子句的值总是false,不能用来获取任何元组

查看执行计划
EXPLAIN 

SELECT *  
FROM teacher  
WHERE id = 1 and id = 2
		

在这里插入图片描述

11.7、 select tables optimized away

在没有GROUPBY子句的情况下,基于索引优化MIN/MAX操作或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化。

11.8、 distinct

一旦MYSQL找到了与行相联合匹配的行,就不再搜索了

查看执行计划
EXPLAIN 

SELECT 
DISTINCT t1.name  
FROM teacher t1
LEFT JOIN course c1 ON t1.id = c1.teacher_id;

在这里插入图片描述

11.9、 not exists

MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了

查看执行计划
EXPLAIN 
SELECT count( 1 )  
FROM course c1 
LEFT JOIN course c2 ON c1.id = c2.id 
WHERE
	c2.id IS NULL;
			

在这里插入图片描述

解释
  1. course表中的id是主键,不可能为NULL,当mysql在用c1表的id扫描course表,并查找c2表的行时,如果在c2表发现一个匹配的行就不再继续扫描c2了,因为c2表中的id字段不可能为NULL。
    这样避免了对c2表的多次扫描。

11.10、 range checked for each Record

  1. MySQL没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。
  2. 这是使用索引的最慢的连接之一,但是速度比没有索引要快得多
查看执行计划
EXPLAIN 
SELECT c1.*  
FROM course c1, course c2  
WHERE
	c1.id >= c2.id 
	AND c1.id <= c2.id 
			

在这里插入图片描述

11.11、 Using sort_union(…), Using union(…), Using intersect(…)

  1. 这些函数说明如何为index_merge联接类型合并索引扫描。
  2. 简单来说:
    1. 对多个索引分别进行条件扫描,然后将各自的结果进行合并(intersect/union)
查看执行计划1

下面的例子中teacher_id是一个检索范围,此时mysql会使用sort_union函数来进行索引的合并。

EXPLAIN 
SELECT 	c1.*  
FROM course c1  
WHERE
	c1.id = 1 
	OR c1.teacher_id > 2;
			

在这里插入图片描述

查看执行计划2

下面的例子中teacher_id是固定值,此时mysql会使用union函数来进行索引的合并。

EXPLAIN 
SELECT 	c1.*  
FROM course c1  
WHERE
	c1.id = 1 
	OR c1.teacher_id = 2;
			

在这里插入图片描述

查看执行计划3

下面的例子中teacher_id是固定值,此时mysql会使用union函数来进行索引的合并。

EXPLAIN 
SELECT 	c1.*  
FROM course c1  
WHERE
	c1.name = '语文'
	AND  c1.teacher_id = 1;
	
			

在这里插入图片描述

在这里插入图片描述

11.12、 Using index for group-by

  1. 表明可以在索引中找到分组所需的所有数据,不需要查询实际的表。

11.13、 Select tables optimized away

  1. SELECT操作已经优化到不能再优化了
    1. MySQL根本没有遍历表或索引就返回数据了
查看执行计划
explain select min(id) from course;

在这里插入图片描述

11.14、 No tables used

Query语句中使用from dual 或不含任何from子句

查看执行计划
explain select now() from dual;

在这里插入图片描述

12、filtered

  1. 通过条件过滤出的行数/查找范围的总行数*100
  2. 单位是百分比

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql优化--explain--结果参数--02 的相关文章

  • MySQL有两个不同的密码?

    我确信它们是不同事物的密码 但我不确定是什么 当在终端连接到 MySQL 时 我输入 usr LOCAL mysql BIN mysql h host u username p然后系统会提示我输入密码 密码是 但是当使用 PHP 连接到 M
  • 在 MySQL 数据库中存储图像文件或 URL?哪个更好? [复制]

    这个问题在这里已经有答案了 可能的重复 在数据库中存储图像 是还是否 https stackoverflow com questions 3748 storing images in db yea or nay 数据库中的图像与文件系统中的
  • SQL统计高于和低于平均分的学生人数

    我在下面有一个示例表 我试图获取高于平均分数的学生人数和低于平均分数的学生人数 name subject classroom classarm session first term score first term grade std1 m
  • MYSQL 查询返回“资源 id#12”而不是它应返回的数值

    不知道为什么 但这返回了错误的值 我正在取回此资源 ID 12 而不是我正在寻找的数值 1 执行此操作的代码是 type SELECT account type from user attribs WHERE username userna
  • Codeigniter 加入多个条件

    我正在使用 Codeigniter Active Records 课程 我想加入我的users与我的桌子clients表 这样我就可以显示用户的 真实 姓名 而不仅仅是他们的 ID 这是什么clients表看起来像 示例 列 a 1 a 2
  • 在docker中使用MySQL数据库设置aspnetcore

    我正在尝试设置一个 docker compose 文件 其中包含 asp net core mysql 数据库和 phpmyadmin 的容器 设置我的 mysql 服务器没有问题 我可以使用 phpmyadmin 访问它 我的 asp n
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

    我的 mysql 服务器停止后无法启动 命令使用 sudo etc init d mysql restart Error 重新启动 mysql 通过 systemctl mysql serviceJob for mysql service
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)

    当我尝试连接 mysql 时出现以下错误 Can t connect to local MySQL server through socket var lib mysql mysql sock 2 这个错误有解决办法吗 其背后的原因可能是什
  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W

随机推荐

  • 【VSCode报错】 Error while fetching extensions : XHR failed

    如果安装完vscode之后插件列表加载时出现了Error while fetching extensions XHR failed说明当前网络有地方配置了代理 当然这个代理可能不是你手动配置的 可能是因为你安装了某些浏览器插件 比如IGG插
  • pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系

    tep是一款测试工具 在pytest测试框架基础上集成了第三方包 提供项目脚手架 帮助以写Python代码方式 快速实现自动化项目落地 在tep项目中 自动化测试用例都是放到tests目录下的 每个 py文件相互独立 没有依赖 1个文件即1
  • python: excel假期时间提取统计

    encoding utf 8 版权所有 2023 涂聚文有限公司 许可信息查看 描述 Author geovindu Geovin Du 涂聚文 IDE PyCharm 2023 1 python 311 Datetime 2023 9 3
  • 数据库文件导出/备份

    8 2 MySql备份 导出 备份流程 1 打开数据库可视化软件 找到希望导出的文件位置 按图操作 我这里用的是sqlyog 2 选择备份表作为SQL转存 3 选择一下存储位置 接下来默认就行 4 导出完成 找到刚才选择的地址既可看到导出的
  • HTML select 下拉表单 textarea 文本域元素

    title HTML select 下拉表单 textarea 文本域元素 select 1 select 下拉菜单 应用场景 需要有一个下拉选项 有多个选项让用户选择 节约页面空间 使用 select 定义下拉列表 2 代码示例
  • 大数据项目实战——基于某招聘网站进行数据采集及数据分析(一)

    大数据项目实战 第一章 项目概述 文章目录 大数据项目实战 第一章 项目概述 学习目标 一 项目需求和目标 二 预备知识 三 项目架构设计及技术选取 四 开发环境和开发工具介绍 五 项目开发流程 总结 学习目标 掌握项目需求和目标 了解项目
  • 分析优酷/土豆/pptv/乐视 HTML5、m3u8地址

    转载 http blog sina com cn s blog 4ae178ba01015hx1 html http blog sina com cn s blog 4ae178ba01015hwz html YouTube已经支持HTML
  • 步进电机与伺服电机基础知识

    步进电机与伺服电机基础知识 最近做三轴运动控制器 grbl方案 留记录 注 本文以两相电机为例 步进电机和伺服电机如果都用驱动器驱动的话 使用方式一样 所以本文以步进电机讲解 步进电机是一种与专门用于速度和位置精确控制的特种电机 它旋转是以
  • init,service和systemctl的区别

    参考http www ruanyifeng com blog 2016 03 systemd tutorial commands html 1 service service是一个脚本命令 分析service可知是去 etc init d目
  • 算法之组合数学及其算法篇(二) ----- 鸽巢原理

    鸽巢原理 前言 鸽巢原理 运用1 运用二 运用三 鸽巢原理的推广 推论 运用一 运用二 鸽巢原理在几何上的作用 鸽巢原理对于数学的证明 前言 鸽巢原理又称抽屉原理或鞋盒原理 这个原理最早是由狄利克雷 Dirichlet 提出的 鸽巢原理是解
  • 东风汽车集团技术中心携手永洪科技,实现一站式数字化转型!

    随着数字化浪潮的席卷 中国制造业正积极探索数字化转型之路 以适应经济高质量发展的需求 在这一背景下 中国领先的商业智能服务提供商永洪科技与东风汽车集团有限公司技术中心达成战略合作 共同推动东风汽车集团的数字化升级 作为中国汽车行业的领军企业
  • 准确率与召回率

    百度百科的解释很容易懂了 但是下面的解释非常容易记忆 你对你的前任回忆起来的有多少是对的就是准确率precison 当然你还有没回忆 recall 起来的 回忆起来的占总体回忆的比例就是召回率recall 中文翻译略坑 百度百科的内容 召回
  • (已解决)jar包启动命令中的自定义变量参数(-D...)无法被服务识别

    目录 问题现象 问题分析 1 本机IDEA启动测试 2 jar包脚本命令启动测试 解决方法 问题现象 今天在使用脚本文件 sh文件 启动 一个java服务时 发现脚本启动命令中添加的变量参数无法被服务识别到 问题分析 下面将通过一个java
  • 华为机试题85-最长回文子串

    描述 给定一个仅包含小写字母的字符串 求它的最长回文子串的长度 所谓回文串 指左右对称的字符串 所谓子串 指一个字符串删掉其部分前缀和后缀 也可以不删 的字符串 数据范围 字符串长度1 s 350 进阶 时间复杂度 O n 空间复杂度 O
  • table、tr、td表格的行、单元格等属性说明

    table 标签定义HTML表格 简单的HTML表格由table元素以及一个或多个tr th或td元素组成 tr元素定义表格行 th元素定义表头 td元素定义表格单元格 table 标签常见的可选属性有 1 align 规定表格相对周围元素
  • vue实现excel本地表格下载

    div style margin top 20px div
  • Springboot整合RedisTemplate

    RedisTemplate是在Jedis的基础上进行了封装 依赖
  • 抖音壁纸小程序怎么做?手把手教你开通流量主拥有自己的壁纸小程序

    最近抖音壁纸小程序很火 下面就让小编来给大家分享一下抖音壁纸小程序这套系统的独特之处 往下看 功能介绍如下 1 支持抖音 快手 QQ及微信4端合一 2 带达人入驻功能 3 达人分佣功能 4 独立的达人端后台 各项数据一目了然 5 支持独立达
  • 零知识证明原理

    零知识证明 定义 证明 Prover 向验证者 Verifier 证明一个命题成立 同时不泄露其他任何知识 这种就被称为零知识证明 应该具备以下三个性质 1 完备性 若一个证明方确实掌握了某论断的答案 则他肯定能找到方法向验证方证明他手中掌
  • mysql优化--explain--结果参数--02

    mysql优化 explain 结果参数 02 1 数据准备 DROP TABLE IF EXISTS course CREATE TABLE course id int 0 NOT NULL AUTO INCREMENT COMMENT