小编Ale*_*rin的帖子

如果其他 where 子句返回足够多的结果,SQL Server 能否避免子查询或连接?

以这个为例:

SELECT TOP 1 FROM customers
WHERE firstname LIKE 'John%'
   OR id IN (SELECT id_customer 
             FROM customer_emails 
             WHERE email like 'john.doe@%' )
Run Code Online (Sandbox Code Playgroud)

查询优化器是否设法优先处理第一个子句,如果更简单的子句对于至少 1 条记录(使用 Top 1)为真,则避免执行子查询?

我问这个主要是因为上面的查询可以重写为 Join,根据Join vs. sub-query从技术上讲,它会更快。但是,如果避免使用子查询,则在第一个子句可能为真的情况下,上面的示例显然优于 Join 。

sql-server optimization

4
推荐指数
1
解决办法
1767
查看次数

标签 统计

optimization ×1

sql-server ×1