今天学习内连接隐式显式的时候发现二者的语法规则虽然不同,但实际上达到的效果是一样的,二者的区别就只有这些吗?实际上不是的,主要在于以下四个方面:
MySQL 中内连接可以分为隐式内连接和显式内连接,两者的主要区别如下:
- 语法上
-
隐式内连接使用where条件进行连接,语法是:
select * from table1,table2 where table1.id = table2.id
-
显式内连接使用INNER JOIN进行连接,语法是:
select * from table1 inner join table2 on table1.id = table2.id
- 执行顺序上
- 隐式内连接会先做笛卡尔积,然后在过滤不匹配的行。
- 显式内连接先匹配两表的连接条件,然后返回匹配的行。
- 可读性上
- 显式内连接的JOIN语法可读性更好。
- 性能上
- 在大数据量下,显式内连接性能更好。
总体来说,显式语法更标准,可读性更好,大数据量下性能更优,所以在编写SQL时,显式内连接语法较为推荐。