在過去,我在查詢varbinary(max)列時注意到了糟糕的性能。可以理解,但它似乎也發生在檢查它是否爲空,我希望引擎會採取一些捷徑。在varbinary字段上檢查ISNULL的策略?
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
那是一個有效的策略是什麼?還有什麼其他方法可以有效地查詢二進制字段的涉及時間?