columna indid de sysindexes

08/09/2004 - 06:22 por wandoo | Informe spam
Hola a todos, de ante mano mil gracias por el apoyo.
Alguien me puede explicar o mandar un link sobre
información de las columnas de sysobjects y de sysindexes

¿Porqué cuando realizo una consulta de los nombres de mis
tablas en una db y las filas de cada una debo de usar lo
siguiente?

WHERE (sysindexes.indid = 0 OR sysindexes.indid = 1)

Mi consulta completa queda así...

SELECT sysobjects.name, sysindexes.rowcnt FROM sysobject
INNER JOIN sysindexes
WHERE (sysobjects.xtype = 'U') --Hasta aquí voy bien
AND (sysindexes.indid = 0 OR sysindexe.indid = 1)
ORDER by sysobjects.name

Espero me puedan ayudar.
 

Leer las respuestas

#1 qwalgrande
08/09/2004 - 09:23 | Informe spam
Hola.

Yo tampoco lo tengo muy claro, así que me he informado un poco. Comparto
contigo lo que he visto, a la espera de que alguien pueda aportar algo más de
sabiduría.

En la tabla sysindexes, el índice cluster lleva un indid = 1 y no hay
entradas con indid = 0 para esa tabla. Si la tabla no tiene índice cluster,
no tiene entradas con indid = 1, si no con indid = 0. Este registro con indid
= 0 puede referirse a un índice non-clustered o , en caso de que la tabla no
tenga ningún índice, a la propia tabla. De hecho, el campo "name" es el
nombre de la tabla, y no el del índice. Así, si juntamos las entradas de
indid = 1 e indid = 0 obtenemos una lista de todas las tablas.

Todo esto lo he sacado de los BOL y unas cuantas consultas que he lanzado en
varias bbdd. Échale un vistazo. Espero que alguien pueda aportar alguna
información a más bajo nivel.

qwalgrande

"wandoo" wrote:

Hola a todos, de ante mano mil gracias por el apoyo.
Alguien me puede explicar o mandar un link sobre
información de las columnas de sysobjects y de sysindexes

¿Porqué cuando realizo una consulta de los nombres de mis
tablas en una db y las filas de cada una debo de usar lo
siguiente?

WHERE (sysindexes.indid = 0 OR sysindexes.indid = 1)

Mi consulta completa queda así...

SELECT sysobjects.name, sysindexes.rowcnt FROM sysobject
INNER JOIN sysindexes
WHERE (sysobjects.xtype = 'U') --Hasta aquí voy bien
AND (sysindexes.indid = 0 OR sysindexe.indid = 1)
ORDER by sysobjects.name

Espero me puedan ayudar.


Preguntas similares