我想編寫一個SpringBatch Tasklet,它自動激活或取消激活給定數據庫表的所有索引。代碼需要獨立於DBMS工作(需要SQL Server,Oracle和HSQLDB)。使用JDBC檢索給定表的所有索引
這是我到目前爲止已經試過:
DatabaseMetaData dbMetaData = connection.getMetaData();
ResultSet rs = dbMetaData.getIndexInfo(null, null, tableName, true, false);
while (rs.next()) {
// work with ResultSet
}
但是,我沒有得到Indexes或任何有用的信息的名稱。
那麼,任何人都可以提供一些關於如何使用JDBC連接對象將表的所有索引設置爲活動或非活動狀態的提示?
的tablename是區分大小寫;檢查它是否完全匹配,也可以用true指定參數'unique',這意味着它只會**包含唯一索引。你的表格是否有唯一的索引? –
關於其他問題禁用索引對於每個RDBMS都不是那麼容易和真正不同的(在MSSQL中使用DBCC命令或閱讀http://stackoverflow.com/questions/6146024/is-it-possible-to-temporarily-disable-an-index -in-postgres)
你確定你不能重新考慮你的設計嗎?你需要哪一個? –