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