【发布时间】:2017-03-06 09:32:02
【问题描述】:
查询-
sel TableName, DatabaseName, sum(CurrentPerm/(1024*1024*1024)) as Size_in_GB
from dbc.tablesize
group by 1,2
order by GB desc
结果-
+-----------+--------+------------+
| TableName | DBName | Size_in_GB |
+-----------+--------+------------+
| WRP | A | 28,350.01 |
| CPC | B | 19,999.37 |
| SDF | C | 13,263.67 |
| DB1400 | D | 13,200.26 |
+-----------+--------+------------+
从上面的简单查询我可以看到 数据库 A 的表 WRP 接近 28350 GB
现在我正在尝试加入另一个表 dbc.indices 以使用列 IndexType 进行过滤,但现在所有表的 Size_in_GB 都发生了变化。
sel a.TableName,a.DatabaseName, sum(CurrentPerm/(1024*1024*1024)) as Size_in_GB from dbc.tablesize a
join dbc.indices b on a.TableName = b.TableName and a.DatabaseName=b.DatabaseName
--where b.indexType='P'
group by 1,2
order by Size_in_GB desc
结果是这样的-
+-----------+--------+------------+
| TableName | DBName | Size_in_GB |
+-----------+--------+------------+
| WRP | A | 56,700.02 |
| CPC | B | 39,998.74 |
| DB1400 | D | 39,600.78 |
+-----------+--------+------------+
现在同一个表的大小是原来的两倍,即 WRP 是 56700 GB。 (其他表类似)
我不确定我用于加入的逻辑有什么问题。
P.S - 我的目标是找到所有大小超过 100GB 且 indexType 为 'P' 的表
编辑 - 共享 DBC.INDICES 表中的相关列
+--------------+------------+-------------+-----------+------------+---------------+------------+----------------+
| DatabaseName | TableName | IndexNumber | IndexType | UniqueFlag | IndexName | ColumnName | ColumnPosition |
+--------------+------------+-------------+-----------+------------+---------------+------------+----------------+
| Some DB | Some Table | 1 | P | N | IndexNamehere | ColumnA | 1 |
+--------------+------------+-------------+-----------+------------+---------------+------------+----------------+
【问题讨论】:
-
索引表是什么样子的?
-
SELECT Distinct会帮助你