使用列varbinary NOT NULL计算行需要花费大量时间

时间:2018-01-26 10:07:59

标签: sql sql-server sql-server-2008-express

此查询

SELECT COUNT(*) 
FROM Table 
WHERE [Column] IS NOT NULL

花了很多时间。该表有5000行,列类型为VARBINARY(MAX)

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您的查询需要对可能非常大的列执行表扫描,而无需对其进行索引。如果不改变你的方法,你就无法解决这个问题。

一种选择是将表拆分为两个表。第一个表可以包含您现在拥有的所有详细信息,第二个表只包含该文件。您可以将其设为1-1表,以确保数据不会重复。

Table ERD

您只需将二进制数据根据需要添加到第二个表中。如果不再需要,您只需删除记录即可。这样您就可以简单地编写JOIN查询来获取您要查找的信息。

SELECT
    COUNT(*)
FROM dbo.Table1
INNER JOIN dbo.Table2
    ON Table1.Id = Table2.Id