Select * from table t1 inner join table t2 on t1.id=t2.id
Select * from table t1,table t2 where t1.id=t2.id
根据效果,哪个查询是乐观查询?
答案 0 :(得分:2)
第一个查询使用标准ANSI联接,第二个查询使用旧式显式联接。
推荐使用标准ANSI连接,因为它更简洁,更简洁。
两个查询之间没有区别。
两者都会产生相同的输出,并且在性能方面不会有差异。
干杯!
答案 1 :(得分:2)
create table t1 (id int primary key);
create table t2 (id int primary key);
explain select * from t1 inner join t2 on t1.id = t2.id;
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra -: | :---------- | :---- | :--------- | :----- | :------------ | :------ | :------ | :-------------------------------- | ---: | -------: | :---------- 1 | SIMPLE | t1 | null | index | PRIMARY | PRIMARY | 4 | null | 1 | 100.00 | Using index 1 | SIMPLE | t2 | null | eq_ref | PRIMARY | PRIMARY | 4 | fiddle_NTBFHZQPZPTPOTLPGUEV.t1.id | 1 | 100.00 | Using index
explain select * from t1, t2 where t1.id = t2.id;
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra -: | :---------- | :---- | :--------- | :----- | :------------ | :------ | :------ | :-------------------------------- | ---: | -------: | :---------- 1 | SIMPLE | t1 | null | index | PRIMARY | PRIMARY | 4 | null | 1 | 100.00 | Using index 1 | SIMPLE | t2 | null | eq_ref | PRIMARY | PRIMARY | 4 | fiddle_NTBFHZQPZPTPOTLPGUEV.t1.id | 1 | 100.00 | Using index
db <>提琴here
这两个查询在功能上都是相同的(它们产生相同的结果),并且优化程序为它们两个都产生相同的解释计划(至少在这个简单的cas中,也许在更复杂的查询中)。
但是,大多数SQL专家会告诉您,隐式连接语法(在from
子句中使用逗号)的处理更为复杂,并且自1992年以来,ANSI SQL标准建议使用显式连接( join ... on ...
语法)。我强烈建议您遵循该建议。
相关阅读: