Ho eseguito un test rapido su SQL Server 2012 su una scatola hyper-v RAM da 8 GB. Puoi vedere i risultati per te stesso. Non stavo eseguendo altre applicazioni con finestre a parte SQL Server Management Studio durante l'esecuzione di questi test.
Il mio schema di tabella:
CREATE TABLE [dbo].[employee](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Numero totale di record nella Employee
tabella: 178090131 (~ 178 milioni di righe)
Prima query:
Set Statistics Time On
Go
Select Count(*) From Employee
Go
Set Statistics Time Off
Go
Risultato della prima query:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 35 ms.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 10766 ms, elapsed time = 70265 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
Seconda query:
Set Statistics Time On
Go
Select Count(1) From Employee
Go
Set Statistics Time Off
Go
Risultato della seconda query:
SQL Server parse and compile time:
CPU time = 14 ms, elapsed time = 14 ms.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 11031 ms, elapsed time = 70182 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
È possibile notare una differenza di 83 (= 70265 - 70182) millisecondi che può essere facilmente attribuita all'esatta condizione del sistema al momento dell'esecuzione delle query. Inoltre ho fatto una singola corsa, quindi questa differenza diventerà più accurata se faccio diverse corse e faccio un po 'di media. Se per un set di dati così grande la differenza arriva a meno di 100 millisecondi, allora possiamo facilmente concludere che le due query non presentano alcuna differenza di prestazioni esibita da SQL Server Engine.
Nota : la RAM raggiunge un utilizzo prossimo al 100% in entrambe le esecuzioni. Ho riavviato il servizio SQL Server prima di avviare entrambe le esecuzioni.