如何在 informix 中获取 table 的块列表?

How to get the list of chunks of a table in informix?

我需要在 informix 数据库中找到特定 table 占用的块。 我目前的方法是从 oncheck -pe dbspace 命令中获取结果。但是当 db-space 有很多块时,这个任务非常耗时。我需要知道是否有任何单个查询或快速方法可以通过扩展特定 table

来列出占用的块

sysmaster 数据库中的 systabextents 可用于确定与 table 关联的块。示例查询:

select distinct te_chunk
from sysmaster:systabextents
where te_partnum != 0 and te_partnum in
  (select partnum from systables where tabname = "<table>"
   union
   select partn from sysfragments f, systables t
   where f.tabid = t.tabid and tabname = "<table>"
  );

联合子查询的第一部分将处理 table 未分段的,而第二部分处理索引分区和分段的 table。

要获取块路径名称而不是编号,可以使用此查询:

select distinct c.fname
from sysmaster:systabextents te, sysmaster:syschunks c
where te.te_chunk = c.chknum
and te_partnum != 0 and te_partnum in
  (select partnum from systables where tabname = "<table>"
   union
   select partn from sysfragments f, systables t
   where f.tabid = t.tabid and tabname = "<table>"
  );