J'ai une requête sur une grande table qui ressemble à ceci:
declare @myIdParam int = 1
select *
from myTable
where (@myIdParam is null or myTable.Id = @myIdParam)
Il existe plusieurs conditions similaires comme celle-ci dans la clause where, et il existe également de nombreuses jointures, mais il s'agit d'un résumé.
En effet, si @myIdParam est null, nous ne voulons pas restreindre les résultats en utilisant ce paramètre.
Je ne suis pas un pro de la DB, mais d'après mes tests, il semble que cette vérification NULL soit effectuée pour chaque enregistrement et non optimisée de quelque façon que ce soit.
Si je supprime la vérification nulle et suppose que le paramètre n'est pas nul, la requête retourne instantanément. Sinon, cela prend jusqu'à dix secondes.
Existe-t-il un moyen d'optimiser cela afin que la vérification ne soit effectuée qu'une seule fois lors de l'exécution?
OPTION(RECOMPILE)