首页 > 解决方案 > 嵌套 select 语句是否比 where 语句更好?

问题描述

我想加快我的查询速度。我想知道以下查询是否有任何性能差异。

方法#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;

标签: sql

解决方案


首先应避免使用逗号连接语法:

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 个不依赖于成本模型的酷 SQL 优化 作者 Lukas Eder


推荐阅读