为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm 163
【操作系统】: 海光麒麟V10
【CPU】:海光麒麟
【问题描述】*:
问题1:这种有索引名但没有索引列的 是达梦自动生成的吗?
问题2:oracle可以这样查,不知道达梦是不是,如果不是的话,请提供SQL查询方法?
这样查询呢?
SELECT IDX.OWNER,IDX.TABLE_NAME,IDX.INDEX_NAME
FROM ALL_INDEXES IDX
INNER JOIN ALL_TABLES TB
ON TB.TABLE_NAME=IDX.TABLE_NAME
AND TB.OWNER=IDX.OWNER
INNER JOIN
(SELECT SYSOBJ.NAME FROM SYSOBJECTS SYSOBJ INNER JOIN SYSINDEXES SYSIDX ON SYSIDX.ID=SYSOBJ.ID WHERE SYSIDX.FLAG IN (0,8,32) AND SYSOBJ.SCHID IN (SELECT OBJ1.ID FROM SYSOBJECTS OBJ1 WHERE OBJ1.NAME LIKE 'OTC%' AND OBJ1.TYPE$='SCH')) ALLIDX
ON ALLIDX.NAME=IDX.INDEX_NAME
WHERE TB.OWNER LIKE 'OTC%'
--AND IDX.STATUS='VALID' --索引是否有效
--AND IDX.VISIBILITY='VISIBLE' --索引是可见
GROUP BY IDX.OWNER,IDX.TABLE_NAME,IDX.INDEX_NAME
ORDER BY IDX.OWNER,IDX.TABLE_NAME,IDX.INDEX_NAME;
参考官网说明:https://eco.dameng.com/document/dm/zh-cn/pm/manage-index#10.3.1.1%20%E5%88%9B%E5%BB%BA%E8%81%9A%E9%9B%86%E7%B4%A2%E5%BC%95
建表后,DM8 也可以用创建新聚集索引的方式来重建表数据,并按新的聚集索引排序。
查询时也可忽略:
select t.table_name,t.index_type,t.index_name,t1.column_name from all_indexes t left join all_ind_columns t1
on t1.index_name=t.index_name where t1.column_name is NOT null ;
属于聚集主键索引,在具备主键属性的时候,会自动生成相应的系统索引,如果不关注这些索引,可以使用过滤条件过滤掉这部分