SQL服务器IF EXISTS与IF条件性能

时间:2016-10-17 06:40:25

标签: sql sql-server

我有一个表Business(包含10,000多行),位列ISBILLINGBUSINESS。 在存储过程中,我必须检查记录是否ISBILLINGBUSINESS为True。

我可以比较两种方法。

(1)

IF EXISTS (SELECT id FROM BUSINESS WHERE ID = 5404 AND ISBILLINGBUSINESS = 1)
select 'Billing Business'

(2)

IF((SELECT ISBILLINGBUSINESS FROM BUSINESS WHERE ID = 5404) = 1)
select 'Billing Business'

我想知道以下两种方法的性能明显差异。 哪一个更好?有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

可能是有效的代码

 declare @Boolbillbuss bit
select @Boolbillbuss = ISBILLINGBUSINESS FROM BUSINESS WHERE ID = 5404
IF( @Boolbillbuss=1)
 select 'Billing Business'

答案 1 :(得分:0)

对于性能问题,10K行通常太小。在任何情况下,在性能方面,拥有适当的索引很重要,IF表达式的形式在这里并不重要。

如果ID上有唯一索引,则两种变体都很好并且几乎相同。

如果ID是唯一的并且是聚集索引的主键,那么您拥有所需的一切。

如果聚簇索引不同,或者此表上没有聚簇索引,请创建覆盖索引,其中包括查询中引用的所有列:

CREATE UNIQUE NONCLUSTERED INDEX [IX_ID] ON [Business]
(
    [ID] ASC
)
INCLUDE ([ISBILLINGBUSINESS])