我对java.sql.DatabaseMetaData界面很熟悉,但我发现它非常笨重.例如,为了找出表名,您必须使用众所周知的文字作为列名来调用getTables并循环返回ResultSet.
是否有更简单的方法来获取数据库元数据?
我正在使用Spring JdbcUtils.extractDatabaseMetaData()方法来分析数据库.该函数调用回调并移交DatabaseMetaData对象.这个对象提供了getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern).
我称之为这样getColumns("",TABLE_OWNER_USERNAME,null,null) ,结果得到400列.这些正是我想要的结果,但请求需要1分钟.
我可以以某种方式优化此查询以快速?拉动400行应该在1秒而不是1分钟内完成.
编辑:我不怀疑Spring部分很慢.更仔细的分析表明,获取DatabaseMetaData需要花费几秒钟的getColumns()时间非常长.