欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

详解Mysql多表联合查询效率分析及优化_MySQL

程序员文章站 2022-04-29 17:08:36
...
代码如下:

SELECT column_name FROM table1 LEFT [OUTER] JOIN table2 ON table1.column=table2.column
b. RIGHT [OUTER] JOIN:

RIGHT与LEFT JOIN相似不同的仅仅是除了显示符合连接条件的结果之外,还需要显示右表中不符合连接条件的数据列,相应使用NULL对应

代码如下:

SELECT column_name FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column=table2.column


Tips:

代码如下:

SELECT * FROM table1,table2 WHERE table1.id=table2.id;

2. ON

mysql>

代码如下:

SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;

SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.id;


3. USING子句,如果连接的两个表连接条件的两个列具有相同的名字的话可以使用USING

例如:

SELECT FROM LEFT JOIN USING ()

连接多于两个表的情况举例:

mysql>

SELECT artists.Artist, cds.title, genres.genre  
 
FROM cds  
 
LEFT JOIN genres N cds.genreID = genres.genreID  
 
LEFT JOIN artists ON cds.artistID = artists.artistID; 

或者 mysql>

SELECT artists.Artist, cds.title, genres.genre  
 
FROM cds  
 
LEFT JOIN genres ON cds.genreID = genres.genreID  
 
 LEFT JOIN artists -> ON cds.artistID = artists.artistID 
 
 WHERE (genres.genre = 'Pop'); 

--------------------------------------------

代码如下:

SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2=5;


因此,可以安全地将查询转换为普通联接:

代码如下:

SELECT * FROM t1, t2 WHERE t2.column2=5 AND t1.column1=t2.column1;


这样可以更快,因为如果可以使查询更佳,MySQL可以在表t1之前使用表t2。为了强制使用表顺序,使用STRAIGHT_JOIN。

以上就是本文的全部内容,希望对大家的学习有所帮助。