Sql 在WHERE子句上执行ON子句
谁能告诉我以下哪项查询的性能更好Sql 在WHERE子句上执行ON子句,sql,sql-server,Sql,Sql Server,谁能告诉我以下哪项查询的性能更好 SELECT * FROM [TABLE1] T1 INNER JOIN [TABLE2] T2 ON T2.[FK_ID] = T1.[PK_ID] WHERE T2.[ACTIVE] = 1; hpe这将给你答案:它们是相同的:优化器足够聪明,可以解决这个问题 同样重要的是,SQL是声明性的,所以您向优化器询问一些东西,但没有告诉它如何做 但是,第一个是“正确的”,因为您正在分离
SELECT
*
FROM
[TABLE1] T1
INNER JOIN [TABLE2] T2
ON T2.[FK_ID] = T1.[PK_ID]
WHERE
T2.[ACTIVE] = 1;
hpe这将给你答案:它们是相同的:优化器足够聪明,可以解决这个问题 同样重要的是,SQL是声明性的,所以您向优化器询问一些东西,但没有告诉它如何做
但是,第一个是“正确的”,因为您正在分离连接和位置。根据我的说法,第二个查询应该更有效。必须使用sql Profiler检查每个查询的性能,然后您就会知道。然后返回并接受您过去的一些问题的答案。我的表大小非常小,因此执行时间不会有太大变化。那么这真的没关系,是吗?+1表示声明性和。。。根据维基百科的说法,这显然是必须的。
SELECT
*
FROM
[TABLE1] T1
INNER JOIN [TABLE2] T2
ON T2.[FK_ID] = T1.[PK_ID] AND
T2.[ACTIVE] = 1;