sql-server – 如何便宜地确定列是否只包含NULL记录?

我有一个500列和100M行的大表.基于一个小样本,我相信只有大约50个列包含任何值,而另一个450只包含NULL值.我想列出不包含数据的列.

在我当前的硬件上,查询每一列大约需要24小时(从tab中选择count(1),其中col_n不为null)

是否有一种较便宜的方法来确定列是否完全为空/ NULL?

解决方法

那这个呢:
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

如果使用informatION_SCHEMA.COLUMNS表,则可以轻松创建此查询.

编辑:

一个想法:

SELECT MAX(column_1),MAX(column_2),….. FROM table_name

如果结果包含值,则填充列.它应该需要一次表扫描.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...