Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 count(*), sum(1) - Что быстрее?  [new]
nibbles
Member

Откуда: Moscow
Сообщений: 2378
кто-нить исследовал данный вопрос?
или ткните на ссылку в форуме - потому что сам найти не смог
19 ноя 05, 11:46    [2086219]     Ответить | Цитировать Сообщить модератору
 Re: count(*), sum(1) - Что быстрее?  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
А конкретнее можно запросы привести...
19 ноя 05, 13:05    [2086301]     Ответить | Цитировать Сообщить модератору
 Re: count(*), sum(1) - Что быстрее?  [new]
Glory
Member

Откуда:
Сообщений: 104760
А вы взгляните на планы


select count(*) from sysobjects
-------------------------------------------------------------------------------
Rows Executes StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
----------- ----------- ------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ---------------------------------------------------- ------------------------------- ------------------------ ------------------------ ------------------------ ----------- ------------------------ ----------- -------- ------------------------------ -------- ------------------------
1 1 select count(*) from sysobjects 19 1 0 NULL NULL NULL NULL 1.0 NULL NULL NULL 4.2962704E-2 NULL NULL SELECT 0 NULL
1 1 |--Compute Scalar(DEFINE:([Expr1002]=Convert([Expr1003]))) 19 2 1 Compute Scalar Compute Scalar DEFINE:([Expr1002]=Convert([Expr1003])) [Expr1002]=Convert([Expr1003]) 1.0 0.0 0.0001335 11 4.2962704E-2 [Expr1002] NULL PLAN_ROW 0 1.0
1 1 |--Stream Aggregate(DEFINE:([Expr1003]=Count(*))) 19 3 2 Stream Aggregate Aggregate NULL [Expr1003]=Count(*) 1.0 0.0 0.0001335 11 4.2962704E-2 [Expr1003] NULL PLAN_ROW 0 1.0
1354 1 |--Index Scan(OBJECT:([RLEdb].[dbo].[sysobjects].[ncsysobjects2])) 19 4 3 Index Scan Index Scan OBJECT:([RLEdb].[dbo].[sysobjects].[ncsysobjects2]) NULL 1335.0 4.1282203E-2 0.001547 4 4.2829204E-2 NULL NULL PLAN_ROW 0 1.0


select sum(1) from sysobjects
-------------------------------------------------------------------------------------
1 1 select sum(1) from sysobjects 20 1 0 NULL NULL NULL NULL 1.0 NULL NULL NULL 4.2962704E-2 NULL NULL SELECT 0 NULL
1 1 |--Compute Scalar(DEFINE:([Expr1002]=If ([Expr1003]=0) then NULL else [Expr1004])) 20 2 1 Compute Scalar Compute Scalar DEFINE:([Expr1002]=If ([Expr1003]=0) then NULL else [Expr1004]) [Expr1002]=If ([Expr1003]=0) then NULL else [Expr1004] 1.0 0.0 0.0001335 11 4.2962704E-2 [Expr1002] NULL PLAN_ROW 0 1.0
1 1 |--Stream Aggregate(DEFINE:([Expr1003]=Count(*), [Expr1004]=SUM(1))) 20 3 2 Stream Aggregate Aggregate NULL [Expr1003]=Count(*), [Expr1004]=SUM(1) 1.0 0.0 0.0001335 11 4.2962704E-2 [Expr1003], [Expr1004] NULL PLAN_ROW 0 1.0
1354 1 |--Index Scan(OBJECT:([RLEdb].[dbo].[sysobjects].[ncsysobjects2])) 20 4 3 Index Scan Index Scan OBJECT:([RLEdb].[dbo].[sysobjects].[ncsysobjects2]) NULL 1335.0 4.1282203E-2 0.001547 4 4.2829204E-2 NULL NULL PLAN_ROW 0 1.0

Сканируется вроде один и тот же индекс, а вот шаги Stream Aggregate и Compute Scalar отличаются
19 ноя 05, 14:31    [2086425]     Ответить | Цитировать Сообщить модератору
 Re: count(*), sum(1) - Что быстрее?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Побуквоедствую чуть-чуть

К сообщению приложен файл. Размер - 0Kb
19 ноя 05, 14:57    [2086454]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить