繁体   English   中英

SQL服务器中T-SQL的查询性能

[英]Query performance of T-SQL in SQL Server

我在 SQL 服务器中有两个临时查询,如下所示,

select * 
from Product(nolock) 
where id = '12345' and name = 'ABC';

select * 
from Product(nolock) 
where name = 'ABC' and id = '12345';

我们在 id 列上有聚集索引,在 name 列上没有索引。 哪个查询会更快? 为什么?

性能将是相同的

SQL 服务器查询优化器足够聪明,可以看到条件相同——只是顺序不同。

WHERE子句中的条件排序不相关。

SQL 服务器将 select 首先按id ,然后在第二步按name顺序。

在这种情况下,它是无关紧要的:

我创建了一个产品表,其主键聚集在 ID 上,并复制了您的测试用例

启用执行计划会给你答案:)

测试代码:

drop table if exists products
Create table products
(
id int primary key clustered,
Value1 float
)

;with randowvalues
    as(
       select 1 id, CAST(RAND(CHECKSUM(NEWID()))*100 as varchar(100)) randomnumber
       --select 1 id, RAND(CHECKSUM(NEWID()))*100 randomnumber
        union  all
        select id + 1, CAST(RAND(CHECKSUM(NEWID()))*100 as varchar(100))  randomnumber
        
        from randowvalues
        where 
          id < 1000
      )
 
 
insert into products
select *
from randowvalues
OPTION(MAXRECURSION 0)

select *
from products
where id = 9 and value1 = 75.6648

select *
from products
where  value1 = 75.6648 and id = 9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM