假设我有一张名为PEOPLE
的表,其中有3列ID, LastName, FirstName
,这些列都没有索引。
LastName
更加独特,并且FirstName
不太独特。SQL中where子句的顺序是否重要
如果我做2个搜索:
select * from PEOPLE where FirstName="F" and LastName="L"
select * from PEOPLE where LastName="L" and FirstName="F"
我的信念是,第二个是快的,因为更独特的标准(LastName
)至上的where
子句中,并记录将得到更有效地消除。我不认为优化器足够聪明,可以优化第一个sql。
我的理解是否正确?
不,这个顺序并不重要 - 任何像样的查询优化器都会查看全部** WHERE子句并找出满足该查询的最有效方式 – 2012-07-11 15:50:01
当您运行这两个语句时,您的观察结果如何?执行计划是什么样子的? – 2012-07-11 15:51:53
您是指特定的RDBMS吗?确实存在差异。 – Bjoern 2012-07-11 15:52:36