Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: --<<<@u6u$t0>>>-- en 24 Octubre 2014, 17:16 pm



Título: ¿Que es un indice "tableIndexStatistic"?
Publicado por: --<<<@u6u$t0>>>-- en 24 Octubre 2014, 17:16 pm
Hola, estoy haciendo una aplicacion en Java y Microsoft SQL Server 2005, y en este momento necesitaba averiguar que columnas tenian un indice y cuales especificamente tienen Unique.  :)

Con un codigo muy parecido a este:

Código:
String tablaNombre = "tClientes";

DatabaseMetaData DBMetadatos = DBConnection.getMetaData();
ResultSet DBUniques = DBMetadatos.getIndexInfo(null, null, tablaNombre, true, true);

while(DBUniques.next())
{
String indiceColumna = DBUniques.getString("COLUMN_NAME");
String indiceTipo = DBUniques.getString("TYPE");

System.out.println("Columna: " + indiceColumna +" | Indice: "+indiceTipo);
}

los resultados que me tira son:

Citar
Columna: null | Indice: 0
Columna: id_cliente | Indice: 1

Los tipos de indices que devuelve "getIndexInfo" dependiendo del numero pueden ser:
Citar
tableIndexStatistic (0)
tableIndexClustered (1)
tableIndexHashed (2)
tableIndexOther (3)

segun la documentacion de Microsoft--> http://technet.microsoft.com/en-us/library/ms378646%28v=sql.110%29.aspx

Sé lo que son los tableIndexClustered y los tableIndexHashed, pero la verdad no se a que se refiere con tableIndexStatistic ni para que sirve. ¿alguien sabe algo al respecto y me puede dar una mano? :huh:

PD: si conocen otra forma mejor para saber que columnas son Unique usando Java diganme por favor.



Título: Re: ¿Que es un indice "tableIndexStatistic"?
Publicado por: ivancea96 en 25 Octubre 2014, 18:55 pm
Código
  1. SHOW COLUMNS FROM tabla1

Eso devuelve las columnas de la tabla, y toda su información: nombre, tipo de dato, etc.


Título: Re: ¿Que es un indice "tableIndexStatistic"?
Publicado por: --<<<@u6u$t0>>>-- en 25 Octubre 2014, 20:52 pm
Código
  1. SHOW COLUMNS FROM tabla1

Eso devuelve las columnas de la tabla, y toda su información: nombre, tipo de dato, etc.

Esa sentencia es solo para MySQL. Por eso aclare que uso Microsoft SQL Server 2005 en el post.

Gracias de todas formas.


Título: Re: ¿Que es un indice "tableIndexStatistic"?
Publicado por: ivancea96 en 25 Octubre 2014, 22:33 pm
Ah sorry, no me fijé :S

¿Usando 'information_schema'?


Título: Re: ¿Que es un indice "tableIndexStatistic"?
Publicado por: --<<<@u6u$t0>>>-- en 26 Octubre 2014, 16:47 pm
Ah sorry, no me fijé :S

¿Usando 'information_schema'?

ni INFORMATION_SCHEMA.COLUMNS ni INFORMATION_SCHEMA.TABLES muestran indices de ningun tipo  :-\

lo mas cercano que encontre con information_schema es:
Código:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'UNIQUE'

aunque no muestra los indices, solo las restricciones, supongo que servira si los indices UNIQUE parte siempre alguna restriccion UNIQUE

pero no estoy seguro por desgracia, porque segun lo que entendi de una publicacion en internet es que puede haber un indice UNIQUE sin la restriccion UNIQUE, asi que capaz no me sirve siempre este metodo  :(

igual gracias por la ayuda, saludos.

PD: segun: http://databases.aspfaq.com/schema-tutorials/schema-how-do-i-list-all-the-indexes-in-a-database.html no hay un metodo estandar con "information_schema" para obtener los indices, asi que depende de cada tipo de base de datos por lo visto