有没有办法在teradata中找到所有未压缩的表?
到目前为止,我正在使用
手动完成SHOW TABLE <TABLE_NAME>
并检查列是否包含COMPRESS
个关键字。如果我有100张桌子,这会变得很繁琐。
是否有一个列或表,我可以查询这些表,就像我可以检查宏 -
SELECT * FROM dbc.tables WHERE tablekind='M' AND databasename='database'
感谢任何帮助。
答案 0 :(得分:3)
您可以找到所有压缩列:
select * from dbc.ColumnsV
where CompressValueList is not null
获取没有任何压缩的表:
SELECT * FROM dbc.TablesV
WHERE TableKind IN ('T', 'O') -- both PI and NoPI tables
AND (DatabaseName, TableName) NOT IN
(
SELECT DatabaseName, TableName
FROM dbc.columnsv
WHERE CompressValueList IS NOT NULL
)
答案 1 :(得分:0)
正如您所提到的,压缩更像是一个“列事物”,而不是“表格事物”,因此您最好检查列元数据:
这是一个可能的查询(有待改进):
select t.tablename, sum(case when compressvaluelist is null then 0 else 1 end) compressed_cols, count(*) cols
from dbc.ColumnsV c join dbc.TablesV t on (c.tablename=t.tablename and c.databasename=t.databasename)
where t.databasename='<databasename>'
and t.tablekind in ('T','O')
group by 1
having compressed_cols=0
答案 2 :(得分:0)
您可以使用dbc表列。 Compressible ='C'会给你这些值。
select databasename,tablename,columnname,compressible
from dbc.columns
where compressible in ('A','C')
在我们的查询中为什么你选择tablekind ='M',它不会返回表的细节但会返回宏的细节。