Strategien zum Überprüfen von ISNULL für varbinary-Felder?

In der Vergangenheit habe ich beim Abfragen einer varbinary (max) -Spalte eine schreckliche Leistung festgestellt. Verständlich, aber es scheint auch zu passieren, wenn man prüft, ob es null ist oder nicht, und ich hatte gehofft, die Engine würde stattdessen einige Abkürzungen verwenden.

select top 100 * from Files where Content is null

ch würde vermuten, dass es langsam ist, weil es @ i

Needing, um die gesamte Binärdatei herauszuziehen, und Es ist nicht indiziert (varbinary kann nicht Teil eines normalen Index sein)

Diese Frag scheint meiner Annahme von Langsamkeit hier nicht zuzustimmen, aber ich habe immer wieder Leistungsprobleme mit Binärfeldern.

Eine mögliche Lösung, die ich mir vorgestellt habe, besteht darin, eine berechnete Spalte zu erstellen, die ist indiziert:

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

Ist das eine gültige Strategie? Welche anderen Möglichkeiten gibt es, um effizient abzufragen, wenn Binärfelder betroffen sind?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage