Estadisticas de Tablas

29/08/2005 - 23:48 por Pao | Informe spam
Si regenero los indices de una tabla dbcc dbreindex internamente también hace
una actualización de las estadisticas de una tabla? o son cosas diferentes.
Yo tengo un proceso que hace esta regeneración y tengo activado por base el
create/update estadisticas.
Pero como proceso aparte no
Para que me sirven la estadisticas y que es lo que se recomienda hacer.

Gracias por su ayuda.

Preguntas similare

Leer las respuestas

#1 Maxi
30/08/2005 - 03:27 | Informe spam
Hola Pao, una cosa es generar los indices y otra es mantenerlos!! lo que se
suele hacer es crear indices y luego tener una tarea de mantenimiento la
cual se encarga de las actualizaciones, podrias poner una tarea diaria donde
se actualice solo el 10% de la muestra y luego una el fin de semana para el
100%


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Pao" escribió en el mensaje
news:
Si regenero los indices de una tabla dbcc dbreindex internamente también
hace
una actualización de las estadisticas de una tabla? o son cosas
diferentes.
Yo tengo un proceso que hace esta regeneración y tengo activado por base
el
create/update estadisticas.
Pero como proceso aparte no
Para que me sirven la estadisticas y que es lo que se recomienda hacer.

Gracias por su ayuda.

Respuesta Responder a este mensaje
#2 Alejandro Mesa
30/08/2005 - 15:22 | Informe spam
Pao,

Si regenero los indices de una tabla dbcc dbreindex internamente también hace
una actualización de las estadisticas de una tabla?



No existen estadisticas de una tabla. Existen estadisticas sobre la
distribucion de valores en la llave de un indice y tambien estadisticas de la
distribucion de valores en una determinada columna que no esparte de llave
alguna.

"DBCC DBREINDEX" reconstruye las estadisticas automaticamente, asi que no
tienes por que actualizar las estadisticas asociadas a lo indices despues de
usar este comando si es que estas regenerando todos los indices de la base de
datos. Si no los regeneras todos, entonces si debes actualizar las
estadisticas de los restantes, asi como las estadisticas asociadas a columnas
que no son parte de la llave de un indice en caso de que estas existan.

Para que me sirven la estadisticas y que es lo que se recomienda hacer.



Las estadisticas son usadas por la maquina optimizadora de queries de sql
server y juegan un papel fundamental a la hora de escojer los indices a ser
usados por una consulta o sentencia.

Microsoft recomienda que estas se actualizen al menos diariamente, puesto
que muchas veces estas quedan desactualizadas debido a operaciones que
afectan un grupo grande de filas.

Ve sp_updatestats en los libros en linea.


AMB

"Pao" wrote:

Si regenero los indices de una tabla dbcc dbreindex internamente también hace
una actualización de las estadisticas de una tabla? o son cosas diferentes.
Yo tengo un proceso que hace esta regeneración y tengo activado por base el
create/update estadisticas.
Pero como proceso aparte no
Para que me sirven la estadisticas y que es lo que se recomienda hacer.

Gracias por su ayuda.

Respuesta Responder a este mensaje
#3 Pao
30/08/2005 - 21:48 | Informe spam
Ok, muchas gracias.
Disculpa la ignorarncia pero como defines el término distribución de valores.

"Alejandro Mesa" wrote:

Pao,

> Si regenero los indices de una tabla dbcc dbreindex internamente también hace
> una actualización de las estadisticas de una tabla?

No existen estadisticas de una tabla. Existen estadisticas sobre la
distribucion de valores en la llave de un indice y tambien estadisticas de la
distribucion de valores en una determinada columna que no esparte de llave
alguna.

"DBCC DBREINDEX" reconstruye las estadisticas automaticamente, asi que no
tienes por que actualizar las estadisticas asociadas a lo indices despues de
usar este comando si es que estas regenerando todos los indices de la base de
datos. Si no los regeneras todos, entonces si debes actualizar las
estadisticas de los restantes, asi como las estadisticas asociadas a columnas
que no son parte de la llave de un indice en caso de que estas existan.

> Para que me sirven la estadisticas y que es lo que se recomienda hacer.

Las estadisticas son usadas por la maquina optimizadora de queries de sql
server y juegan un papel fundamental a la hora de escojer los indices a ser
usados por una consulta o sentencia.

Microsoft recomienda que estas se actualizen al menos diariamente, puesto
que muchas veces estas quedan desactualizadas debido a operaciones que
afectan un grupo grande de filas.

Ve sp_updatestats en los libros en linea.


AMB

"Pao" wrote:

> Si regenero los indices de una tabla dbcc dbreindex internamente también hace
> una actualización de las estadisticas de una tabla? o son cosas diferentes.
> Yo tengo un proceso que hace esta regeneración y tengo activado por base el
> create/update estadisticas.
> Pero como proceso aparte no
> Para que me sirven la estadisticas y que es lo que se recomienda hacer.
>
> Gracias por su ayuda.
>
Respuesta Responder a este mensaje
#4 Alejandro Mesa
30/08/2005 - 22:30 | Informe spam
Algo asi como:

select count(distinct c1) / count(*) from t1

mientras mas cerca este este valor de 1, mejor sera la selectividad, osea
cuando uses un query como:

select * from t1 where c1 = '???'

menor cantidad de filas seran devueltas.

Este ejemplo fue sacado del link que te pase anteriormente.

use northwind
go

Declare @total_unique float
Declare @total_rows float
Declare @selectivity_ratio float

SELECT @total_unique = 0
SELECT @total_rows = 0
SELECT @selectivity_ratio = 0

SELECT @total_unique = (SELECT COUNT(DISTINCT OrderID) FROM [Orders])

SELECT @total_rows = (SELECT COUNT(*) FROM [Orders])

SELECT @selectivity_ratio = ROUND((SELECT @total_unique/@total_rows),2,2)
SELECT @selectivity_ratio as 'Selectivity Ratio'
go

Declare @total_unique float
Declare @total_rows float
Declare @selectivity_ratio float

SELECT @total_unique = 0
SELECT @total_rows = 0
SELECT @selectivity_ratio = 0

SELECT @total_unique = (SELECT COUNT(DISTINCT OrderID) FROM [Order Details])

SELECT @total_rows = (SELECT COUNT(*) FROM [Order Details])

SELECT @selectivity_ratio = ROUND((SELECT @total_unique/@total_rows),2,2)
SELECT @selectivity_ratio as 'Selectivity Ratio'
go

Si te fijas, en la tabla orders la selectividad por orderid es 1. Esto es
esperado ya que orderid es la clave primaria. Sin embargo, en [order details]
esto cambia y el valor es menor que 1 porque tenemos multiple items por
orderid.

Esta info la puedes ver si usas:

dbcc show_statistics (nombre_tabla, nombre_indice)

el valor es "density", que no es lo mismo, sino lo inverso.

select 1.00 / count(distinct orderid) from orders

Si nos regimos por este numero, entonces mientras mas chiquito, entonces
mejor selectividad.

Te recomiendo que leas el libro "Inside SQL Server 2000", escrito por Kalen
Delaney. Te ayudara mucho a entender como trabaja sql server por dentro.

http://www.amazon.com/exec/obidos/t...6?v=glance


AMB



"Pao" wrote:

Ok, muchas gracias.
Disculpa la ignorarncia pero como defines el término distribución de valores.

"Alejandro Mesa" wrote:

> Pao,
>
> > Si regenero los indices de una tabla dbcc dbreindex internamente también hace
> > una actualización de las estadisticas de una tabla?
>
> No existen estadisticas de una tabla. Existen estadisticas sobre la
> distribucion de valores en la llave de un indice y tambien estadisticas de la
> distribucion de valores en una determinada columna que no esparte de llave
> alguna.
>
> "DBCC DBREINDEX" reconstruye las estadisticas automaticamente, asi que no
> tienes por que actualizar las estadisticas asociadas a lo indices despues de
> usar este comando si es que estas regenerando todos los indices de la base de
> datos. Si no los regeneras todos, entonces si debes actualizar las
> estadisticas de los restantes, asi como las estadisticas asociadas a columnas
> que no son parte de la llave de un indice en caso de que estas existan.
>
> > Para que me sirven la estadisticas y que es lo que se recomienda hacer.
>
> Las estadisticas son usadas por la maquina optimizadora de queries de sql
> server y juegan un papel fundamental a la hora de escojer los indices a ser
> usados por una consulta o sentencia.
>
> Microsoft recomienda que estas se actualizen al menos diariamente, puesto
> que muchas veces estas quedan desactualizadas debido a operaciones que
> afectan un grupo grande de filas.
>
> Ve sp_updatestats en los libros en linea.
>
>
> AMB
>
> "Pao" wrote:
>
> > Si regenero los indices de una tabla dbcc dbreindex internamente también hace
> > una actualización de las estadisticas de una tabla? o son cosas diferentes.
> > Yo tengo un proceso que hace esta regeneración y tengo activado por base el
> > create/update estadisticas.
> > Pero como proceso aparte no
> > Para que me sirven la estadisticas y que es lo que se recomienda hacer.
> >
> > Gracias por su ayuda.
> >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida