Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 多个选择查询vs在一个查询中选择多个变量_Sql - Fatal编程技术网

Sql 多个选择查询vs在一个查询中选择多个变量

Sql 多个选择查询vs在一个查询中选择多个变量,sql,Sql,vs 有什么性能差异吗?有一个很大的差异-第一种方法只需扫描表一次,而第二种方法需要扫描表4次 虽然SQL提供程序可以对此进行优化,但我怀疑它们中的任何一个都可以,而且无论如何,SQL通常是从宿主语言激活的,每个查询都单独发送给提供者-因此提供者无法一起优化单独的查询…有很大的区别-第一种方法只需扫描表一次,而第二种方法则需要扫描表4次 虽然SQL提供程序可以对此进行优化,但我怀疑它们中的任何一个都可以,而且无论如何,SQL通常是从主机语言激活的,并且每个查询都单独发送给提供程序-因此提供程序无

vs


有什么性能差异吗?

有一个很大的差异-第一种方法只需扫描表一次,而第二种方法需要扫描表4次


虽然SQL提供程序可以对此进行优化,但我怀疑它们中的任何一个都可以,而且无论如何,SQL通常是从宿主语言激活的,每个查询都单独发送给提供者-因此提供者无法一起优化单独的查询…

有很大的区别-第一种方法只需扫描表一次,而第二种方法则需要扫描表4次


虽然SQL提供程序可以对此进行优化,但我怀疑它们中的任何一个都可以,而且无论如何,SQL通常是从主机语言激活的,并且每个查询都单独发送给提供程序-因此提供程序无法同时优化单独的查询…

假设在第二种情况下输入错误,第一个会更快,因为您只执行一个查询,因此只建立一个连接。

假设在第二种情况下输入错误,第一个会更快,因为您只执行一个查询,因此只建立一个连接。

我假设您要检索四次

在第一个选项中,只进行了1次查询,而在第二个选项中,您有4次查询,这意味着数据库必须多次执行查询

第一个选项应该总是更快,除非您有一个非常大的表,并且需要完整的表扫描来返回所有4列。在这种情况下,如果对a进行索引,则4次往返的组合结果可能比获取所有列的速度更快


如果您的第二个选项中有输入错误,则为1。应该总是更快。

我假设您要检索四次

在第一个选项中,只进行了1次查询,而在第二个选项中,您有4次查询,这意味着数据库必须多次执行查询

第一个选项应该总是更快,除非您有一个非常大的表,并且需要完整的表扫描来返回所有4列。在这种情况下,如果对a进行索引,则4次往返的组合结果可能比获取所有列的速度更快


如果您的第二个选项中有输入错误,则为1。应该总是更快。

我认为第一个更快,但是。。让我们测试一下

在第二组选择中考虑返回A、B、C和D

在SQL SERVER 2008 R2的
中:

让我们试试看:

SELECT A from Table1 Where Constraint1
SELECT B from Table1 Where Constraint1
SELECT C from Table1 Where Constraint1
SELECT D from Table1 Where Constraint1
运行第一个项目的执行计划:

Create Table Test 
(
A int not null,
B int not null,
C int not null,
D int not null,
)

insert into Test values (1,2,3,5)
这将导致:

西班牙语的,但是你可以看到数字。CPU成本为
0.0000796

那么,让我们试试第二个:

select A, B, C, D from Test
这将导致:

如您所见,每个选择使用相同的CPU成本,但是。。这里要做4个选择。通过一小行,您不会看到差异,但是,让我更新一下,使用更多的数据

更新

现在,我做了几个插入,现在我们有:

select A from Test
select B from Test
select C from Test
select D from Test
让我们做同样的事情:我们得到第一个
选择
,在执行计划中,我们得到:

正如您所看到的,我们获得了更多的
CPU成本
(当然,行数更多!)

然后让我们检查4个选项:

同样,我们得到了相同的
CPU成本
,但我们运行了4次

总之,在显示一个字段或四个字段时没有差异,但在执行一个
select
和四个字段时有很大差异


我知道这是一个简单的问题,但我想做一些“科学/研究”

我认为第一个更快,但是。。让我们测试一下

在第二组选择中考虑返回A、B、C和D

在SQL SERVER 2008 R2的
中:

让我们试试看:

SELECT A from Table1 Where Constraint1
SELECT B from Table1 Where Constraint1
SELECT C from Table1 Where Constraint1
SELECT D from Table1 Where Constraint1
运行第一个项目的执行计划:

Create Table Test 
(
A int not null,
B int not null,
C int not null,
D int not null,
)

insert into Test values (1,2,3,5)
这将导致:

西班牙语的,但是你可以看到数字。CPU成本为
0.0000796

那么,让我们试试第二个:

select A, B, C, D from Test
这将导致:

如您所见,每个选择使用相同的CPU成本,但是。。这里要做4个选择。通过一小行,您不会看到差异,但是,让我更新一下,使用更多的数据

更新

现在,我做了几个插入,现在我们有:

select A from Test
select B from Test
select C from Test
select D from Test
让我们做同样的事情:我们得到第一个
选择
,在执行计划中,我们得到:

正如您所看到的,我们获得了更多的
CPU成本
(当然,行数更多!)

然后让我们检查4个选项:

同样,我们得到了相同的
CPU成本
,但我们运行了4次

总之,在显示一个字段或四个字段时没有差异,但在执行一个
select
和四个字段时有很大差异


我知道这是一个简单的问题,但我想做一些“科学/研究”

这是一个根本性的语义差异,还是你的意思是将“a”改为“B”、“C”和“D”?这是一个拼写错误,感谢罗伯特纠正了它。这是一个根本性的语义差异,还是你的意思是将“a”改为“B”,“C”和“D”?这是一个打字错误,谢谢罗伯特纠正它。