Dans le passé, j'ai noté des performances terribles lors de l'interrogation d'une colonne varbinary (max). C'est compréhensible, mais cela semble aussi arriver en vérifiant si c'est nul ou non, et j'espérais que le moteur prendrait plutôt quelques raccourcis.Stratégies pour vérifier ISNULL sur les champs varbinary?
select top 100 * from Files where Content is null
Je suppose que c'est lent parce qu'il est
- Ayant besoin pour tirer le binaire tout sur et
- Ce n'est pas indexé (varbinary ne peut pas faire partie d'un indice normal)
This question semble être en désaccord avec mon principe de lenteur ici, mais je semble avoir des problèmes de performance avec des champs binaires à maintes reprises.
Une solution possible, je pensais est de faire une colonne calculée qui est indexé:
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
Est-ce une stratégie valide? Quelles sont les autres façons d'interroger efficacement lorsque des champs binaires sont impliqués?