Jef*_*man 7 sql-server sql-server-2008
我有一个500列和100M行的大表.基于一个小样本,我相信只有大约50个列包含任何值,而另一个450只包含NULL值.我想列出不包含数据的列.
在我当前的硬件上,查询每列需要大约24小时(select count(1) from tab where col_n is not null)
是否有一种较便宜的方法来确定列是否完全为空/ NULL?
Luk*_*Led 14
那这个呢:
SELECT
SUM(CASE WHEN column_1 IS NOT NULL THEN 1 ELSE 0) column_1_count,
SUM(CASE WHEN column_2 IS NOT NULL THEN 1 ELSE 0) column_2_count,
...
FROM table_name
Run Code Online (Sandbox Code Playgroud)
?
如果使用INFORMATION_SCHEMA.COLUMNS表,则可以轻松创建此查询.
编辑:
另一个想法:
SELECT MAX(column_1),MAX(column_2),..... FROM table_name
如果结果包含值,则填充列.它应该需要一次表扫描.
| 归档时间: |
|
| 查看次数: |
3536 次 |
| 最近记录: |