SQL Server 性能 - 子选择或内部联接?

SQL Server performance - Subselect or Inner Join?(SQL Server 性能 - 子选择或内部联接?)
本文介绍了SQL Server 性能 - 子选择或内部联接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在思考这两个语句中哪一个可能具有更高的性能(以及为什么):

I've been pondering the question which of those 2 Statements might have a higher performance (and why):

select * from formelement 
where formid = (select id from form where name = 'Test')

select * 
from formelement fe 
inner join form f on fe.formid = f.id 
where f.name = 'Test'

一个表单包含多个表单元素,一个表单元素始终是一个表单的一部分.

One form contains several form elements, one form element is always part of one form.

谢谢,

丹尼斯

推荐答案

性能取决于 SQL Server 引擎选择的查询计划.查询计划取决于很多因素,包括(但不限于)SQL、确切的表结构、表的统计信息、可用索引等.

The performance depends on the query plan choosen by the SQL Server Engine. The query plan depends on a lot of factors, including (but not limited to) the SQL, the exact table structure, the statistics of the tables, available indexes, etc.

由于您的两个查询非常简单,我猜它们会产生相同(或非常相似)的执行计划,从而产生相当的性能.

Since your two queries are quite simple, my guess would be that they result in the same (or a very similar) execution plan, thus yielding comparable performance.

(对于大型、复杂的查询,SQL 的确切措辞可以有所作为,SQL Tuning by Dan Tow 提供了很多很好的建议.)

(For large, complicated queries, the exact wording of the SQL can make a difference, the book SQL Tuning by Dan Tow gives a lot of great advice on that.)

这篇关于SQL Server 性能 - 子选择或内部联接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
SSIS: Model design issue causing duplications - can two fact tables be connected?(SSIS:模型设计问题导致重复-两个事实表可以连接吗?)
SQL Server Graph Database - shortest path using multiple edge types(SQL Server图形数据库-使用多种边类型的最短路径)
Invalid column name when using EF Core filtered includes(使用EF核心过滤包括时无效的列名)
How should make faster SQL Server filtering procedure with many parameters(如何让多参数的SQL Server过滤程序更快)
How can I generate an entity–relationship (ER) diagram of a database using Microsoft SQL Server Management Studio?(如何使用Microsoft SQL Server Management Studio生成数据库的实体关系(ER)图?)