Indexing 如何在DB2中找到表上可用的所有索引
如何在db2中查找表上可用的所有索引?您还可以执行:Indexing 如何在DB2中找到表上可用的所有索引,indexing,db2,Indexing,Db2,如何在db2中查找表上可用的所有索引?您还可以执行: db2 "select * from syscat.indexes where tabname = 'your table name here' \ and tabschema = 'your schema name here'" DESCRIBE INDEXES FOR TABLE SCHEMA.TABLE SHOW DETAIL 另一种方法是生成表的DDL。
db2 "select * from syscat.indexes where tabname = 'your table name here' \
and tabschema = 'your schema name here'"
DESCRIBE INDEXES FOR TABLE SCHEMA.TABLE SHOW DETAIL
另一种方法是生成表的DDL。 它将为您提供表的完整描述,包括表上的索引 只需右键单击table并单击generateddl/Scripts
适用于大多数数据库。您可以使用以下命令获取索引的详细信息
describe indexes for table schemaname.tablename show detail
要查看所有索引:
select * from user_objects
where object_type='INDEX'
要查看表上的索引及其列,请执行以下操作:
select * from USER_IND_COLUMNS where TABLE_NAME='my_table'
这取决于您使用的DB2版本。 我们有v7r1m0,下面的查询工作得很好
WITH IndexCTE (Schema, Table, Unique, Name, Type, Columns) AS
(SELECT i.table_schema, i.Table_Name, i.Is_Unique,
s.Index_Name, s.Index_Type, s.column_names
FROM qsys2.SysIndexes i
INNER JOIN qsys2.SysTableIndexStat s
ON i.table_schema = s.table_schema
and i.table_name = s.table_name
and i.index_name = s.index_name)
SELECT *
FROM IndexCTE
WHERE schema = 'LIBDEK'
AND table = 'ECOMROUT'
如果您不熟悉CTE,则值得了解。我们的AS400命名约定非常糟糕,所以我一直在使用CTE规范化字段名。我最终制作了一个CTE库,并将其自动附加到我所有查询的顶部 要检查IBM Db2 on Cloud(以前是DashDb)上的表的索引,应使用以下查询:
从SYSCAT.index中选择*,其中TABNAME='my\u tablename'和TABSCHEMA='my\u table\u schema'
您还可以使用“按索引名称检查”:
从SYSCAT.index中选择COUNT(*),其中TABNAME='my\u tablename'和TABSCHEMA='my\u table\u schema'以及INDNAME='index\u name'
使用SYSIBM.sysindex也可以获得相同的结果。但是,此表未在产品文档页面上直接引用
从SYSIBM.sysindex中选择COUNT(*),其中TBNAME='my\u tablename'和TBCREATOR='my\u table\u schema'和NAME='my\u index\u NAME'
请参阅。注意,“descripe”命令只能在DB2客户机中使用,不能通过JDBC或其他接口使用,因为它不是标准的SQL。@ProgramFOX给出了这个问题的答案!好的,因为命令没有被格式化为代码,所以我认为您要求澄清。对于我的as400 db2数据库,我需要查询:从qsys2.systables中选择*,其中Table_schema='schema name'和Table_name='Table name'@YLombardi,或者更确切地说,使用qsys2.sysindexes表(对于as400)什么是
qsys2
?qsys2是一个库。您可以将其视为sql server中的主数据库。SYSCAT
目录视图应该在Linux/Unix/Windows平台上的Db2上使用,而不是SYSIBM
DB2WarehouseonCloud是DB2forLinux。您应该使用SYSCAT
视图,而不是底层表@PaulVernon感谢您指出使用目录视图而不是参考底图表。