我想加快查询速度。 我想知道以下查询是否有任何性能差异。
方法1:
select
*
from
t0, t1
where
t0.a = X
and t0.b = t1.b
方法2:
select
*
from
(select * from t0 where t0.a = X) as t0', t1
where
t0'.b=t1.b;
答案 0 :(得分:3)
首先应避免使用逗号联接语法:
select *
from t0, t1
where t0.a = X
and t0.b = t1.b
=>
select *
from t0
join t1
on t0.a = X
and t0.b = t1.b;
第二个现代查询优化器执行谓词下推,因此两个查询都是等效的。
10 Cool SQL Optimisations That do not Depend on the Cost Model by Lukas Eder
答案 1 :(得分:0)
您应将查询写为:
select *
from t0 join
t1
on t0.b = t1.b
where t0.a = X;
使用现代的,显式的,标准 JOIN
语法不会影响查询的性能。
为了获得更好的性能,您需要在t0(a, b)
和t1(b)
上建立索引。