Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 以下两个查询的性能有什么不同_Sql_Sql Server - Fatal编程技术网

Sql 以下两个查询的性能有什么不同

Sql 以下两个查询的性能有什么不同,sql,sql-server,Sql,Sql Server,SQL Server 2008中以下两个查询的性能有什么不同 问题1: 问题2: 在上述两个查询中,是否有最佳方法实现最佳性能?如果您查看每个查询的执行计划,您会发现它们很可能具有相同的执行计划 最好提高这类查询性能的方法是确保设置了正确的索引。所有的ID栏都应该有索引,如果等级是一个非常大的表,请考虑为它和学生< p>设置索引,如果你查看每个执行计划,你会发现他们完全有可能执行相同的执行计划。 最好提高这类查询性能的方法是确保设置了正确的索引。所有的ID列都应该有索引,如果等级是一个非常大的表

SQL Server 2008中以下两个查询的性能有什么不同

问题1:

问题2:


在上述两个查询中,是否有最佳方法实现最佳性能?如果您查看每个查询的执行计划,您会发现它们很可能具有相同的执行计划


最好提高这类查询性能的方法是确保设置了正确的索引。所有的ID栏都应该有索引,如果等级是一个非常大的表,请考虑为它和学生

< p>设置索引,如果你查看每个执行计划,你会发现他们完全有可能执行相同的执行计划。
最好提高这类查询性能的方法是确保设置了正确的索引。所有的ID列都应该有索引,如果等级是一个非常大的表,考虑为它和学生

将索引放在一个索引上,你可以保证100%,他们执行相同的计划,同样的计划。

在内部联接中拆分和/或WHERE子句时唯一重要的是使用诸如FORCE ORDER之类的选项

要以写操作为代价获得优异的性能,请创建以下索引:

A (id, name)
B (id) includes (class, std)
C (id) includes (result)
D (name) includes (grade)

但是,它仍然取决于您的数据分布和索引的选择性,以确定是否实际使用它们。e、 g.如果你的成绩表只包含5个条目A、B、C、D、e,那么就不会使用索引,它只会扫描并缓冲内存中的表格。

你可以100%保证它们执行相同的计划

在内部联接中拆分和/或WHERE子句时唯一重要的是使用诸如FORCE ORDER之类的选项

要以写操作为代价获得优异的性能,请创建以下索引:

A (id, name)
B (id) includes (class, std)
C (id) includes (result)
D (name) includes (grade)

但是,它仍然取决于您的数据分布和索引的选择性,以确定是否实际使用它们。e、 g.如果你的成绩表只包含5个条目A、B、C、D、e,那么就不会使用索引,它只会在内存中扫描并缓冲该表。

你确定这个连接正确吗?内部联接在D上的等级为D。Name=A.Name您确定此联接正确吗?内部联接等级D ON D.Name=A.Name您不认为在所有联接之后使用where条件过滤数据和在联接条件之前过滤数据会有所不同吗。在这种情况下,如果您看到[[A.Name='Test'和A.ID=3]]在Query1中的所有联接之后位于末尾,而在Query2中不是这样,那么我们在联接条件之前过滤数据。@vinni-对于内部联接,它们的意思是相同的。您可以要求SQL Server执行某些操作,但无法确切控制它将如何执行。它可以使用WHERE条件作为连接的一部分,也可以使用连接作为过滤器-没有区别。你不认为在所有连接之后使用WHERE条件过滤数据和在连接条件之前过滤数据会有区别吗。在这种情况下,如果您看到[[A.Name='Test'和A.ID=3]]在Query1中的所有联接之后位于末尾,而在Query2中不是这样,那么我们在联接条件之前过滤数据。@vinni-对于内部联接,它们的意思是相同的。您可以要求SQL Server执行某些操作,但无法确切控制它将如何执行。它可以使用WHERE条件作为连接的一部分,也可以使用连接作为过滤器-没有区别。你不认为在所有连接之后使用WHERE条件过滤数据和在连接条件之前过滤数据会有区别吗。在这种情况下,如果您看到[[A.Name='Test'和A.ID=3]]在Query1中的所有联接之后位于末尾,而在Query2中则不是这样,那么我们将在联接条件之前过滤数据Vinni 49秒前你不认为在所有连接之后使用where条件过滤数据和在连接条件之前过滤数据会有区别吗。在这种情况下,如果您看到[[A.Name='Test'和A.ID=3]]在Query1中的所有联接之后位于末尾,而在Query2中则不是这样,那么我们将在联接条件之前过滤数据49秒前的维尼
A (id, name)
B (id) includes (class, std)
C (id) includes (result)
D (name) includes (grade)