Encontre esto del Maestro Loria:

26/04/2007 - 17:38 por Alejandro.33.Chile | Informe spam
Uso SQL 2000
Esta es la rutina:
select sysobjects.name
, sum(case when sysindexes.indid<2 then rows
else 0 end) as rows
, sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved
else 0 end) * 8 as reserved
, sum(case when sysindexes.indid in (0,1) then
sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end) * 8 as Data
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.used
else 0 end)
- sum(case when sysindexes.indid in (0,1) then
sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end))*8 as index_size
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved-sysindexes.used
else 0 end)*8) as unused
from sysobjects
join sysindexes
on sysobjects.id=sysindexes.id
where xtype='U'
group by sysobjects.name
order by 2 desc


Me pregunta es alguno de los master podri indica un poco en detalle
que es cada columna ? esta en Bytes ?

De todas maneras esta la raja esta info, lo que necesitaba es
justamente lo que entiendo me entrega, el peso de todas las tablas de
una
 

Leer las respuestas

#1 Javier Loria
26/04/2007 - 18:34 | Informe spam
Hola Alejandro:
Dificillmente maestro, pero si un aprendiz asiduo que comparte sus
conocimientos ;)
Ese codigo fue "tomado" del procedimiento de sistema sp_spaced_used y
adaptado para que trabaje en conjuntos de datos y no fila por fila.
La mayoria de la informacion almacenada en sysindexes esta almacenada en
paginas, por eso se multiplican por 8 para obtener la informacion en Kbs.
Tambien vale la pena mencionar que no siempre esta sysindexes actualizada y
puede producir algunas diferencias con el numero de filas y hacer un
verdadero COUNT(*) sobre la tabla.
Normalmente lo uso, para encontrar las tablas grandes que deberian
optimizarse o eventualmente, (digamos las 20 mas grandes). Tambien para
buscar tablas que pueden estas sobreindexadas o subindexadas, sin que exista
un porcentaje fijo recomendado, simplemente si por ejemplo una tabla tiene
300% mas de espacio en indices que en datos, investigo con detalle cuales
indices tiene construidos. Por ultimo me siver para buscar cuales tablas
combinar en una estrategia de reorganizacion de indices, cuando no es
posible hacerlo para todos.
Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.



wrote in message
news:
Uso SQL 2000
Esta es la rutina:
select sysobjects.name
, sum(case when sysindexes.indid<2 then rows
else 0 end) as rows
, sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved
else 0 end) * 8 as reserved
, sum(case when sysindexes.indid in (0,1) then
sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end) * 8 as Data
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.used
else 0 end)
- sum(case when sysindexes.indid in (0,1) then
sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end))*8 as index_size
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved-sysindexes.used
else 0 end)*8) as unused
from sysobjects
join sysindexes
on sysobjects.id=sysindexes.id
where xtype='U'
group by sysobjects.name
order by 2 desc


Me pregunta es alguno de los master podri indica un poco en detalle
que es cada columna ? esta en Bytes ?

De todas maneras esta la raja esta info, lo que necesitaba es
justamente lo que entiendo me entrega, el peso de todas las tablas de
una

Preguntas similares