sql - where 子句与内连接语句检查,它们相同吗?

标签 sql sql-server inner-join

Possible Duplicate:
Condition within JOIN or WHERE

下面两个查询是否相同?

SELECT u.*
FROM User u
    INNER JOIN Sales s ON (u.userId = s.userId)
WHERE
u.active = 1 AND
s.amount > 0 AND
s.status = 1 

对比:

SELECT u.*
FROM User u
    INNER JOIN Sales s ON 
        (u.userId = s.userId AND s.amount > 0 and s.status=1)
WHERE
u.active = 1

这两个查询的结果集总是相同吗? 性能考虑因素?

最佳答案

SQL Server查询优化器足够聪明,知道这会做同样的事情,所以他会生成相同的执行计划。这意味着您将获得相同的性能。 为了确保您可以查看执行计划并进行比较。

查看Execution Plan Basics

关于sql - where 子句与内连接语句检查,它们相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145275/

相关文章:

sql - Postgresql 查询获取一年内每月的计数

sql-server - 选择角色时 SSAS 多维数据集中的(空)值

mysql - 如何从两个没有 1 :1 relationship? 的关系表中获取数据 - MySQL

sql - 如何查找日期之间的状态

mysql - 3 MySQL 上的表数据库

mysql - 试图找到船上最年轻线官的年龄MYSQL

sql - 克隆分层数据

sql - SQL 中按日期排序

sql - OrientDB:如何使用选择查询更新列

sql-server - 找不到模块 'mssql' nodejs