MySQL查询优化:用子查询代替非主键连接查询实例介绍
2022-11-12 09:30:26
内容摘要
这篇文章主要为大家详细介绍了MySQL查询优化:用子查询代替非主键连接查询实例介绍,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!一对多
文章正文
这篇文章主要为大家详细介绍了MySQL查询优化:用子查询代替非主键连接查询实例介绍,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
一对多的两张表,一般是一张表的外键关联到另一个表的主键。但也有不一般的情况,也就是两个表并非通过其中一个表的主键关联。例如:代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <code> create table t_team ( tid int primary key, tname varchar(100) ); create table t_people ( pid int primary key, pname varchar(100), team_name varchar(100) ); </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <code> BEGIN DECLARE i INT; START TRANSACTION; SET i=0; WHILE i<10000 DO INSERT INTO t_team VALUES(i+1,CONCAT( 'team' ,i+1)); SET i=i+1; END WHILE; SET i=0; WHILE i<1000000 DO INSERT INTO t_people VALUES(i+1,CONCAT( 'people' ,i+1),CONCAT( 'team' ,i%10000+1)); SET i=i+1; END WHILE; COMMIT; END </code> |
代码如下:
1 2 3 | <code> SELECT * FROM t_team t,t_people p WHERE t.tname=p.team_nameAND p.pname= 'people20000' LIMIT 1; </code> |
代码如下:
1 2 3 | <code> SELECT * FROM t_team t INNER JOIN t_peoplep ON t.tname=p.team_name WHERE p.pname= 'people20000' LIMIT 1; </code> |
代码如下:
1 2 3 | <code> SELECT * FROM (SELECT * FROM t_people WHEREpname= 'people20000' LIMIT 1) p, t_team t WHERE t.tname=p.team_name LIMIT 1; </code> |
注:关于MySQL查询优化:用子查询代替非主键连接查询实例介绍的内容就先介绍到这里,更多相关文章的可以留意
代码注释