是否有任何标准java api返回数据库中声明的索引。我尝试在数据库元数据中使用getIndexInfo()但似乎期望表名作为输入并且不符合我的要求。 THX。
答案 0 :(得分:3)
在表格上声明索引。因此,您应首先使用DatabaseMetaData.getTables()检索所有表,然后遍历表名以获取所有索引。
答案 1 :(得分:1)
不,你需要关闭一些sql,这会根据你使用的DBMS而有所不同。
例如,DB2将是: -
select * from sysibm.sysindexes where tbcreator = 'IMPACT';
对于sqlite,它将是: -
Select * from sqlite_master where type = 'index';
答案 2 :(得分:0)
没有100%可移植的“查询”方式,但是很多数据库都实现了标准的INFORMATION_SCHEMA,所以你可以这样查询。
sql = "select TABLE_NAME, INDEX_NAME, NON_UNIQUE, COLUMN_NAME " +
"from INFORMATION_SCHEMA.STATISTICS " +
"where TABLE_SCHEMA = ? " +
"order by TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX";
MySQL和SQLServer支持这一点。 Oracle没有。
请参阅this page
编辑:我最初说“没有100%可移植的方式”,但是你可以使用JDBC元数据API来实现这一点,但是如前面的答案所述,根据表的数量,这可能是低效的。