sys.dm_db_index_usage_stats --> Dif: user_seeks vs user_lookups

25/01/2007 - 19:57 por José | Informe spam
Hola!! Tengo instalado SQL 2005 y estoy utilizando la vista
sys.dm_db_index_usage_stats para averiguar el grado de uso de los
objetos.
Ahora lo que no me queda claro es la diferencia entre
"user_seeks" y "user_lookups" A pesar de haber consultado ya
los BOL:
user_seeks: Número de consultas de búsqueda realizadas por el usuario.
user_lookups: Número de búsquedas realizadas por consultas de usuario.
Alguien me podría aclarar estos conceptos, sobre todo la difernecia??
Cuál es más relevante respecto a la performance??
Gracias...

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
25/01/2007 - 20:44 | Informe spam
José,

Recuerda que hay dos tipos de indices, clustered y nonclustered. Los nodos
hojas del indice clustered son la data, no asi en los nonclustered, pues
estos tiene una direccion - puntero - valor para buscar la data en el indice
clustered o tabla si esta es heap (tabla sin indice clustered). Cuando se
hace hace un scan o index seek en un indice nonclustered, y este no cubre
todas las columnas que se piden en el query, entonces sql server toma el
valor de donde buscar el resto de la info en la tabla o indice clustered.
Esta operacion se conoce como "bookmark lookup" y a esto es a lo que se
refiere.

Deja ver si este ejemplo se comparta igual en tu maquina. Fijate en la
ultima sentencia "select" sobre la tabla [t1], esa hace un index seek en el
indice nonclustered pero tiene que ir a la tabla (en este caso la tabla tiene
indice clustered) a buscar el valor de c3.

create table dbo.t1 (
c1 int not null identity primary key,
c2 int not null default(rand() * 100),
c3 char(2000) not null default ('a')
)
go

declare @i int

set @i = 0

while @i < 100
begin
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values
insert into dbo.t1 default values

set @i = @i + 1
end
go

create index t1_c2_nu_nc_ix
on dbo.t1(c2 asc)
go

select *
from sys.dm_db_index_usage_stats
where [object_id] = object_id('dbo.t1')
order by index_id
go

select * from dbo.t1 where c1 = 1
go

select * from dbo.t1
go

select *
from sys.dm_db_index_usage_stats
where [object_id] = object_id('dbo.t1')
order by index_id
go

select c1, c2 from dbo.t1 where c2 = 5
go

select *
from sys.dm_db_index_usage_stats
where [object_id] = object_id('dbo.t1')
order by index_id
go

valor de c3
select c3 from dbo.t1 where c2 = 5
go

select *
from sys.dm_db_index_usage_stats
where [object_id] = object_id('dbo.t1')
order by index_id
go

drop table dbo.t1
go


AMB

"José" wrote:

Hola!! Tengo instalado SQL 2005 y estoy utilizando la vista
sys.dm_db_index_usage_stats para averiguar el grado de uso de los
objetos.
Ahora lo que no me queda claro es la diferencia entre
"user_seeks" y "user_lookups" A pesar de haber consultado ya
los BOL:
user_seeks: Número de consultas de búsqueda realizadas por el usuario.
user_lookups: Número de búsquedas realizadas por consultas de usuario.
Alguien me podría aclarar estos conceptos, sobre todo la difernecia??
Cuál es más relevante respecto a la performance??
Gracias...





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida