Con SQLServer 2008R2 su un vecchio e storico PC ho lanciato
la Query esposta alla fine su una tabella da 21.500.000 record,
__________________________________________________ ___________
Praticamente esegue 5 operazioni
Registra Datetime
Lancia una vista normale su una parte dei 21.500.000 record
Registra Datetime alla fine del 1° step
Registra ancora Datetime
Lancia la stessa vista di prima ma aggiungo WHERE 1 = 1
Registra ancora Datetime alla fine del 2° step
__________________________________________________ ___________
Il risultato è il seguente con 10.000.000 di record
codice:
Inizio vista normale su 10000000 di record 2012-06-04 21:43:29.1700000
Fine 2012-06-04 21:45:29.5600000
Inizio vista 1 = 1 su 10000000 di record 2012-06-04 21:45:29.5600000
Fine 2012-06-04 21:47:32.7500000
Quindi tralasciando i millesimi
la prima da 21.43.29 a 21.45.29 = 120 secondi
la seconda da 21.45.29 a 21.47.32 = 123 secondi
__________________________________________________ ____________
Ripeto la prova con 15.000.000 di record
codice:
Inizio vista normale su 15000000 di record 2012-06-04 22:07:55.3870000
Fine 2012-06-04 22:10:58.4370000
Inizio vista 1 = 1 su 15000000 di record 2012-06-04 22:10:58.4830000
Fine 2012-06-04 22:14:42.9200000
Quindi sempre tralasciando i millesimi
la prima da 22.07.55 a 22.10.58 = 183 secondi
la seconda da 22.10.58 a 22.14.42 = 224 secondi
__________________________________________________ ____________
Ripeto la prova con 20.000.000 di record
e il glorioso PC mi va in errore di memoria
__________________________________________________ ____________
Segue per conoscenza la Query utilizzata (SQLServer2008R2)
codice:
-- Definisco il DB Da usare
USE Ute;
GO
-- Decido quanti dei 21.548.725 record utilizzare per la prova
SET NOCOUNT ON;
DECLARE @Record int;
SET @Record = 15000000.0;
-- ____________________________________________________________________________
-- Registro l'inizio della vista normale
PRINT N' Inizio vista normale su ' + Cast(@Record AS nvarchar) + N' di record ' + Cast((Cast(GETDATE() as datetime2(7))) AS nvarchar)
-- Eseguo la Vista
SELECT
CUt,
COg,
CId
FROM
dbo.Cor
WHERE CId < @Record
-- Registro la fine della vista
PRINT N' Fine ' + Cast((Cast(GETDATE() as datetime2(7))) AS nvarchar)
-- _____________________________________________________________________________________
-- ____________________________________________________________________________
-- Registro l'inizio della vista 1 = 1
PRINT N' Inizio vista 1 = 1 su ' + Cast(@Record AS nvarchar) + N' di record ' + Cast((Cast(GETDATE() as datetime2(7))) AS nvarchar)
-- Eseguo la Vista
SELECT
CUt,
COg,
CId
FROM
dbo.Cor
WHERE CId < @Record AND 1 = 1
-- Registro la fine della vista
PRINT N' Fine ' + Cast((Cast(GETDATE() as datetime2(7))) AS nvarchar)
-- _____________________________________________________________________________________
Saluti