gpt4 book ai didi

sql - 检查varbinary字段上的ISNULL的策略?

转载 作者:行者123 更新时间:2023-12-04 03:52:15 24 4
gpt4 key购买 nike

过去,我曾在查询varbinary(max)列时注意到糟糕的性能。可以理解,但是在检查它是否为null时也似乎会发生这种情况,我希望引擎改用一些捷径。

select top 100 * from Files where Content is null


我会怀疑它很慢,因为


需要拉出整个二进制文件,并且
它没有索引(varbinary不能是普通索引的一部分)


This question似乎不同意我的慢速前提,但是我似乎一次又一次地遇到二进制字段的性能问题。

我想到的一种可能的解决方案是使索引的计算列:

alter table Files
add ContentLength as ISNULL(DATALENGTH(Content),0) persisted

CREATE NONCLUSTERED INDEX [IX_Files_ContentLength] ON [dbo].[Files]
(
[ContentLength] ASC
)

select top 100 * from Files where ContentLength = 0


那是有效的策略吗?当涉及二进制字段时,还有什么其他方法可以有效地查询?

最佳答案

我认为它很慢,因为varbinary列没有(也不能被索引)。因此,您使用计算(和索引)列的方法是有效的。

但是,我改用ISNULL(DATALENGTH(Content), -1),以便您可以区分长度0和NULL。或者只是使用DATALENGTH(Content)。我的意思是,Microsoft SQL Server不是Oracle,其中空字符串与NULL相同。

关于sql - 检查varbinary字段上的ISNULL的策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com