当前位置: 代码迷 >> J2EE >> 关于两条SQL语句的性能不解,大家来看看
  详细解决方案

关于两条SQL语句的性能不解,大家来看看

热度:77   发布时间:2016-04-17 23:27:19.0
关于两条SQL语句的性能疑惑,大家来看看
SQL1:
SELECT u.id,u.name,u.age,u.class_id FROM mbt.user AS u INNER JOIN mbt.clazz AS c ON u.class_id = c.id AND c.id = 4

SQL2:
SELECT u.id,u.name,u.age,u.class_id FROM mbt.user AS u,mbt.clazz AS c WHERE u.class_id = c.id AND c.id = 4

User表结构:


Clazz表结果:


两条SQL执行结果都一样,我就请教下,两条SQL的性能区别在哪里?我这里数据量小,不能通过查询时间来判断,求教!


------解决思路----------------------
引用:
Quote: 引用:

INNER JOIN 和WHERE 完全一样好咩?
编译后的执行计划也是一模一样的好咩!


好吧,长知识了。but 为毛要设计两种不同写法呢?什么时候有区别



where 是给程序员用的
join 是给数据开发用的
------解决思路----------------------
在关系型数据库发展的早期,联接查询和子查询的性能相差很大,但是现在,各种数据库的自身的优化已经坐得非常好了,所以大部分情况下遵循这么一个原则,优先使用联接,因为联接的性能能满足绝大多数要求,而且语法简洁,不容易混淆,但是有一点要明白,联接查询绝不是性能最好的,同样,子查询性能也不是最好的,如果真的遇到性能非常高要求时,建议联接查询和子查询综合运用,然后测试选出性能最好的sql。
  相关解决方案