Bonjour à tous, j'ai une question à poser au niveau de la construction de requête dynamique.
Imaginer une page de liste avec un formulaire de recherche. Selon ce qui est sélectionné dans ce formulaire, on construit notre WHERE.
On appelle ensuite notre procédure stockée qui fait:
ecexute('SELECT * FROM TOTO WHERE (' + @requete + ')')
Ca marche très bien. Sauf que ca fou en l'air toute l'optimisation des clés et index de SQL. En effet, a cause du exécute, la requête est recalculé a chaque fois.
Résultat on se retrouve avec des performances pourris par ce système pourtant bien pratique.
La seule autre solution consisterais à faire passer à la requête les X paramètres du where et de gruger en faisant qq chose du genre:
WHERE ((toto=@toto or @toto=''))
Si qq'un voit qq chose de mieux, je suis donc à l'écoute car nous sommes actuellement dans une impasse.
Partager