You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by ollie2308 <ol...@yahoo.com> on 2010/04/21 21:14:11 UTC

Re: Columns in index.

Can anyone provide a SQL solution by selecting from the sys tables ?




Sylvain Leroux wrote:
> 
> Hi Robin.
> 
> You may access those informations thought database meta data.
> Here is, as an attachment, a snippet of code to do that.
> 
> 
> Basically, it calls getMetaData(), then getIndexInfo() to obtain info for
> all 
> indexes on a given table:
> 	DatabaseMetaData dbmd = conn.getMetaData();
> 	ResultSet rs = dbmd.getIndexInfo(null, "APP", "TBL", false, false);
> 
> The resulting ResultSet contains all the relevant informations. For your
> needs, 
> I think the most interesting columns will be INDEX_NAME, ORDINAL_POSITION
> and 
> COLUMN_NAME.
> 
> 
> Hope this helps,
> Sylvain
> 
> 
> Robin Bale a écrit :
>> 
>> Hello All,
>> 
>> Somebody has given me a Derby database with some unknown indexes in. I
>> can
>> work out the names of all the indexes on this database, but I would like
>> to
>> know the names of the columns which make up the indexes.
>> 
>> Does anybody have any ideas?
>> 
>> Thanks in advance,
>> 
>> Robin Bale
>> 
>> 
> 
> 
> -- 
> Website: http://www.chicoree.fr
> 
> import java.sql.Connection;
> import java.sql.DatabaseMetaData;
> import java.sql.DriverManager;
> import java.sql.ResultSet;
> import java.sql.ResultSetMetaData;
> import java.sql.SQLException;
> import java.sql.Statement;
> 
> /**
>  * Demonstrate the use of DatabaseMetaData to retrieve index meta
> informations.
>  * 
>  * The result is of the form:
>  * <pre>
>  *     TABLE_CAT |       TABLE_SCHEM |        TABLE_NAME |       
> NON_UNIQUE |   INDEX_QUALIFIER |        INDEX_NAME |              TYPE | 
> ORDINAL_POSITION |       COLUMN_NAME |       ASC_OR_DESC |      
> CARDINALITY |             PAGES |  FILTER_CONDITION |
>  *               |               APP |               TBL |            
> false |                   |              IDX2 |                 3 |                
> 1 |                 C |                 A |              null |             
> null |              null |
>  *               |               APP |               TBL |            
> false |                   |SQL091026130600360 |                 3 |                
> 1 |                 V |                 A |              null |             
> null |              null |
>  *               |               APP |               TBL |             
> true |                   |              IDX1 |                 3 |                
> 1 |                 I |                 A |              null |             
> null |              null |
>  *               |               APP |               TBL |             
> true |                   |              IDX1 |                 3 |                
> 2 |                 C |                 D |              null |             
> null |              null |
>  * </pre>
>  * @author sylvain
>  *
>  */
> public class IndexMetaInformations {
> 	public static void main(String args[]) throws SQLException {	
> 		Connection	conn = DriverManager.getConnection(   
> 				"jdbc:derby:memory:indexMetaDataTestDB;create=true");
> 		
> 		conn.setAutoCommit(true);
> 		
> 		Statement stmt = conn.createStatement();
> 		stmt.execute("CREATE TABLE TBL (I INT, C CHAR(80), V VARCHAR(255),
> PRIMARY KEY(V))");
> 		stmt.execute("CREATE INDEX IDX1 ON TBL (I ASC, C DESC)");
> 		stmt.execute("CREATE UNIQUE INDEX IDX2 ON TBL (C ASC)");
> 		
> 		DatabaseMetaData dbmd = conn.getMetaData();
> 		ResultSet rs = dbmd.getIndexInfo(null, "APP", "TBL", false, false);
> 		
> 		ResultSetMetaData rsmd = rs.getMetaData();
> 		for(int i = 0; i < rsmd.getColumnCount(); ++i) {
> 			System.out.printf("%18s |", rsmd.getColumnLabel(i+1));
> 		}
> 		System.out.println();
> 
> 		while(rs.next()) {
> 			for(int i = 0; i < rsmd.getColumnCount(); ++i) {
> 				System.out.printf("%18s |", rs.getString(i+1));
> 			}
> 			System.out.println();
> 		}
> 		
> 		rs.close();
> 		stmt.close();
> 		conn.close();
> 	}
> }
> 
> 

-- 
View this message in context: http://old.nabble.com/Columns-in-index.-tp26056888p28293947.html
Sent from the Apache Derby Users mailing list archive at Nabble.com.


Re: Columns in index.

Posted by Bryan Pendleton <bp...@gmail.com>.
>>> Somebody has given me a Derby database with some unknown indexes in. I can
>>> work out the names of all the indexes on this database, but I would like to
>>> know the names of the columns which make up the indexes.

Open the database using ij and use the 'describe' and 'show indexes' commands.

thanks,

bryan