tengo una duda y es sobre como identificar un query mal y otro bien.
por ejemplo:
-- creo mi tabla "dbo.data"
CREATE table dbo.data
(
ID int not null identity(1,1),
Placeholder char (100) not null
constraint DEF_Data_Placeholder
default 'this is Placeholder',
ADate datetime not null
constraint PK_Data
primary key clustered(ID)
)
go
--luego creo un index, sobre la tbla dbo.data, para la columna ADate
create nonclustered index IDX_Data_ADate
on dbo.data(ADate)
go
;with CTE(Num)
as
(
select 1
union all
select Num +1
from CTE
where Num <=100000
)
insert into dbo.data (ADate)
select DATEADD(DAY,-Num % 365, GETDATE())
from CTE
option (MAXRECURSION 0)
SELECT * FROM dbo.data
go
ahora aca viene lo curioso, aparte del "set statistics io on"
para identificar un query mal o bueno. es decir cuantas lecturas logicas me bota, los 2 query.
--demostracion de como indentificar un query mal escrito o bien escrito
set statistics io on
go
---query 1
select *
from dbo.data
where DATEADD (DAY,1,ADate ) > GETDATE ()
GO
---query 2
select *
from dbo.data
where ADate > dateadd (DAY,-1,getdate() )
go
una ves haigamos ejecutado el "statistics" ejecutamos los 2 query.
luego nos aparece en mensajes, la lectura logica :
primer query :1299
segundo query:841
a mi parecer el segundo esta bien, y el primero esta mal.
ahora a aparte del set "statistics io on" and "set statistics io off"
hay otra forma de averiguar un query si esta mal, o mejor dicho de comparar, como yo lo hice.
gracias de antemano. :3