Estadisticas convertidas en índices?

23/08/2006 - 16:37 por José | Informe spam
Hola, quería averiguar si por alguna razon las estadísticas autocreadas se
pudieron
convertir en índices?
Concluyo esto despúés de examinar los índices en varias tablas y encontrar:

sp_helpindex tabla:
_WA_Sys_campo4_6E01572D nonclustered, statistics, auto create located on
PRIMARY campo4
La linea anterior se repite 33 veces (con distintos campos), estas entiendo
son las estadísticas autocreadas.

Ahora:
_WA_Sys_campo5_1D1D0420 nonclustered located on PRIMARY campo5
La linea anterior se repite 15 veces (con distintos campos) y serían los
índices que sospecho se autocrearon y no se el motivo...

Mi configuración es autocreate estadisticas habilitado y deshabilitado
autoupdate.
Microsoft SQL Server 7.00 - 7.00.1063 (Intel X86) Apr 9 2002 14:18:16
Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195:
Service Pack 4)
Gracias!!

Preguntas similare

Leer las respuestas

#11 Eladio Rincón
24/08/2006 - 12:50 | Informe spam
Hola José,

con el permiso de Alejandro :)

sp_helpindex no reporta las estadísticas de los objetos, cosa que 2000, 7,
... si lo hacían.

si te fijas en la definición de sp_helpindex en master, podrás ver lo
siguiente:

declare ms_crs_ind cursor local static for
select i.index_id, i.data_space_id, i.name,
i.ignore_dup_key, i.is_unique, i.is_hypothetical, i.is_primary_key,
i.is_unique_constraint,
s.auto_created, s.no_recompute
from sys.indexes i join sys.stats s
on i.object_id = s.object_id and i.index_id = s.stats_id
where i.object_id = @objid



fíjate en bug shiloh_51196; shiloh fué el codename de la versión 2000 :)


en 2005, si quieres borrar las estadísticas, tendrás que ejecutar DROP
STATISTICS tabla.nombre_estadisticas

por otro lado, me gustaría comentar que el script de Alejandro al usar
sysindexes, "sufre" del bug de 2000; es decir, si mostrará las estadísticas;
en su lugar, en 2005, deberías usar sys.indexes (fíjate en el esquema sys).


Por cierto, aunque igual viene fuera de tópico, asegurate que tienen
habilitado "auto update statistics"actualización automático de estadísticas;
podrás ver cual fué la última vez que se actualizaron las estadísticas con
la función STATS_DATE (table_id, index_id)

Bye,

Eladio Rincón,
http://www.siquelnet.com

Mentor, SQL Server MVP
Solid Quality Learning Iberoamericana
http://www.solidqualitylearning.com

Disclaimer: This communication is an original work and represents my sole
views on the subject. It does not represent the views of any other person
or entity either by inference or direct reference.

"José" wrote in message
news:
Gracias de nuevo Alejandro, pero
1)Podrías consultarlo esta noche así confirmo lo del sp_helpindex en sql
2005?
No le pongas el filtro:
and name like '_WA_Sys_Balance_1D1D0420'
Ese filtro le puse para confirmar de que _WA_Sys_Balance_1D1D0420
que me devuelve SQL 2005 es realmente un índice ya que al correr tu
script
no devuelve nada.

Ahora se me ocurrio otra prueba, ejecuto
Drop Index Tabla._WA_Sys_Balance_1D1D0420 y se ejecuta sin errores,
por lo tanto WA_Sys_Balance es un indice!!

En cambio al ejecutar Drop Index Tabla._WA_Sys_nTipo_6E01572D
este es un index name extraido de SQL 7 ya que el 2005 no lo muestra.
el error es Cannot drop the index 'premium._WA_Sys_nTipo_6E01572D',
because
it does not exist or you do not have permission

Como ya comenté ambos tienen diferentes index_description en SQL7,
en SQL 2005 las estadísticas no muestra o por lo menos me parece...



"Alejandro Mesa" wrote in
message
news:
José,

No se por que no inclui este link desde un principio. Espero de silva de
ayuda.

Statistics Used by the Query Optimizer in Microsoft SQL Server 2005
http://www.microsoft.com/technet/pr...stats.mspx


AMB

"Alejandro Mesa" wrote:

> José,
>
> > 2) Un sp_helpindex en SQL 2005 devuelve estadísticas también o solo


índices?
>
> Buena pregunta. Yo no lo he consultado aun, quizas en la noche porque
> no
> tengo 2005 en el trabajo.
>
> > Ahora si corro el script que publicaste sumandole el nombre de


cualquiera de
> > estas 23 filas que me devuelve sql 2005 Ej:
> > indexproperty([id], [name], 'IsAutoStatistics') = 1 and name like
> > '_WA_Sys_Balance_1D1D0420'
>
> No le pongas el filtro:
>
> > and name like '_WA_Sys_Balance_1D1D0420'
>
>
> AMB
>




Respuesta Responder a este mensaje
#12 Alejandro Mesa
24/08/2006 - 14:41 | Informe spam
Muchas gracías Miguel.

Saludos,

Alejandro Mesa

"Miguel Egea" wrote:

También tienes portalsql abierto para lo que quieras, siempre que el trabajo
es de calidad (y contigo siempre lo es) es bienvenido :)

Gracias Alejandro!
"Alejandro Mesa" wrote in message
news:
> Miguel,
>
> Gracías por el complemento. El segundo articulo de esta serie esta listo,
> Salvador Ramos aun no ha tenido tiempo para postearlo en la web, pero
> pronto
> lo tendremos disponible. Quiero agradecerle a Salvador por su ayuda
> incondicional en la publicacion de estos articulos. Igualmente quiero
> agradecerte a ti por incluirme en el articulo que escribistes sobre los
> nuevos operadores ranking y pivot en SQL Server 2005.
>
>
> Saludos,
>
> Alejandro Mesa
>
> "Miguel Egea" wrote:
>
>> Excelente artículo alejandro, lo había leido pero no tuve la oportunidad
>> de
>> decirtelo :-)
>>
>> Saludos
>> Miguel Egea
>> "Alejandro Mesa" wrote in
>> message
>> news:
>> > José,
>> >
>> >> Sigo pensando que son índices. Tengo conceptos equivocados...?
>> >
>> > Son estadisticas creadas por SQL Server. Se crean, en primer lugar,
>> > porque
>> > tienes prendida la opcion "autocreate statistics", la cual puedes ver
>> > si
>> > usas
>> > el procedimiento "sp_dboption". Si usas una coulmna en una expresion
>> > que
>> > aparece en la clausula "where", "having" o en una union y esta columna
>> > no
>> > forma parte de algun indice el cual sql server pueda usar para analizar
>> > las
>> > estadisticas de distribucion sobre los valores de esta, entonces sql
>> > server
>> > crea la estadistica si la opcion "autocreate statistics" esta prendida.
>> >
>> > Una forma de probar que son estadisticas auto creadas por SQL Server es
>> > ejecutando esta sentencia:
>> >
>> > select
>> > [id],
>> > object_name([id]),
>> > [indid],
>> > [name],
>> > col_name([id], indexkey_property([id], indid, 1,'ColumnId'))
>> > from
>> > sysindexes
>> > where
>> > indexproperty([id], [name], 'IsAutoStatistics') = 1
>> > go
>> >
>> > Otra forma seria apagando esta opcion usando "alter database" y
>> > eliminandolas usando "drop statistics". Veras que ya no se vuelven a
>> > crear,
>> > pero ojo que las consecuencias pueden ser peores.
>> >
>> > Estadísticas de distribución en SQL Server 2000 (I).
>> > http://www.helpdna.net/colab02.htm
>> >
>> >
>> > AMB
>> >
>> > "José" wrote:
>> >
>> >> Gracias Miguel, si actualizo las estadísticas
>> >> manualmente(semanalmente).
>> >> Pero el index_description no es igual en un ejemplo que en otro.
>> >> Esta misma base y tabla bajo SQL 2005 sp_helpindex devuelve:
>> >> _WA_Sys_campo5_1D1D0420 nonclustered located on PRIMARY campo5.
>> >> se repite 15 veces (con distintos campos), deduzco que SQL2005
>> >> únicamente muestra índices no estadísticas a difernecia de SQL 7.
>> >> Además consultando la utilización del objeto a través de:
>> >> sys.sysindexes left join master.sys.dm_db_index_usage_stats
>> >> Obtengo:
>> >> Objeto: Tabla
>> >> Nombre: _WA_Sys_campo5_465423DD
>> >> Seeks: 0
>> >> Scans: 0
>> >> Lookups:0
>> >> Updates: 722255
>> >>
>> >> De esto conlcuyo que _WA_Sys_campo5_465423DD además de ser indice
>> >> no se utiliza para búsquedas y encima relentiza mis consultas ya que
>> >> se
>> >> actualiza
>> >> Sigo pensando que son índices. Tengo conceptos equivocados...?
>> >>
>> >>
>> >> "Miguel Egea" wrote in message
>> >> news:
>> >> > deberías dejar la configuración por defecto, o asegurarte de
>> >> > actualizar
>> >> las
>> >> > estadísticas. Las estadísticas también se guardan en sysindexes, y
>> >> > si
>> >> > se
>> >> han
>> >> > creado esas estadísticas ha sido por que se han necesitado en alguna
>> >> > ocasión. No sufras, no se mantienen igual que los índices si es eso
>> >> > lo
>> >> que
>> >> > te proecupa.
>> >> >
>> >> > Saludos
>> >> > Miguel Egea
>> >> > "José" wrote in message
>> >> > news:
>> >> > > Hola, quería averiguar si por alguna razon las estadísticas
>> >> > > autocreadas
>> >> se
>> >> > > pudieron
>> >> > > convertir en índices?
>> >> > > Concluyo esto despúés de examinar los índices en varias tablas y
>> >> > > encontrar:
>> >> > >
>> >> > > sp_helpindex tabla:
>> >> > > _WA_Sys_campo4_6E01572D nonclustered, statistics, auto create
>> >> > > located
>> >> > > on
>> >> > > PRIMARY campo4
>> >> > > La linea anterior se repite 33 veces (con distintos campos), estas
>> >> > > entiendo
>> >> > > son las estadísticas autocreadas.
>> >> > >
>> >> > > Ahora:
>> >> > > _WA_Sys_campo5_1D1D0420 nonclustered located on PRIMARY campo5
>> >> > > La linea anterior se repite 15 veces (con distintos campos) y
>> >> > > serían
>> >> los
>> >> > > índices que sospecho se autocrearon y no se el motivo...
>> >> > >
>> >> > > Mi configuración es autocreate estadisticas habilitado y
>> >> > > deshabilitado
>> >> > > autoupdate.
>> >> > > Microsoft SQL Server 7.00 - 7.00.1063 (Intel X86) Apr 9 2002
>> >> 14:18:16
>> >> > > Microsoft Corporation Standard Edition on Windows NT 5.0 (Build
>> >> > > 2195:
>> >> > > Service Pack 4)
>> >> > > Gracias!!
>> >> > >
>> >> > >
>> >> > >
>> >> >
>> >> >
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
#13 Alejandro Mesa
25/08/2006 - 02:58 | Informe spam
José,

Creo que con lo que Eladio nos explico es suficiente.

Aca adjunto el script para ver las estadisticas auto creadas en SQL Server
2005.

select
object_name([object_id]),
stats_id,
[name],
col_name([object_id], indexkey_property([object_id], stats_id, 1,
'ColumnId'))
from
sys.stats
where
auto_created = 1
go


AMB

"José" wrote:

Gracias de nuevo Alejandro, pero
1)Podrías consultarlo esta noche así confirmo lo del sp_helpindex en sql
2005?
No le pongas el filtro:
and name like '_WA_Sys_Balance_1D1D0420'
Ese filtro le puse para confirmar de que _WA_Sys_Balance_1D1D0420
que me devuelve SQL 2005 es realmente un índice ya que al correr tu script
no devuelve nada.

Ahora se me ocurrio otra prueba, ejecuto
Drop Index Tabla._WA_Sys_Balance_1D1D0420 y se ejecuta sin errores,
por lo tanto WA_Sys_Balance es un indice!!

En cambio al ejecutar Drop Index Tabla._WA_Sys_nTipo_6E01572D
este es un index name extraido de SQL 7 ya que el 2005 no lo muestra.
el error es Cannot drop the index 'premium._WA_Sys_nTipo_6E01572D', because
it does not exist or you do not have permission

Como ya comenté ambos tienen diferentes index_description en SQL7,
en SQL 2005 las estadísticas no muestra o por lo menos me parece...



"Alejandro Mesa" wrote in message
news:
> José,
>
> No se por que no inclui este link desde un principio. Espero de silva de
> ayuda.
>
> Statistics Used by the Query Optimizer in Microsoft SQL Server 2005
> http://www.microsoft.com/technet/pr...stats.mspx
>
>
> AMB
>
> "Alejandro Mesa" wrote:
>
> > José,
> >
> > > 2) Un sp_helpindex en SQL 2005 devuelve estadísticas también o solo
índices?
> >
> > Buena pregunta. Yo no lo he consultado aun, quizas en la noche porque no
> > tengo 2005 en el trabajo.
> >
> > > Ahora si corro el script que publicaste sumandole el nombre de
cualquiera de
> > > estas 23 filas que me devuelve sql 2005 Ej:
> > > indexproperty([id], [name], 'IsAutoStatistics') = 1 and name like
> > > '_WA_Sys_Balance_1D1D0420'
> >
> > No le pongas el filtro:
> >
> > > and name like '_WA_Sys_Balance_1D1D0420'
> >
> >
> > AMB
> >



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