J'essaie d'optimiser une procédure stockée que je maintiens et je me demande si quelqu'un peut me donner une idée des avantages/pénalités de performance des options ci-dessous. Pour ma solution, j'ai fondamentalement besoin d'exécuter un programme de conversion sur une image stockée dans une colonne IMAGE dans une table. Le processus de conversion réside dans un fichier .EXE externe. Voici mes options:Curseur SQL avec procédure stockée et requête avec UDF
Tirez sur les résultats de la table cible dans une table temporaire, puis utiliser un curseur pour aller sur chaque ligne de la table et exécuter une procédure stockée sur la colonne IMAGE. Le proc stocké appelle le fichier .EXE.
Créez une fonction UDF qui appelle le fichier .EXE et exécutez une requête SQL similaire à "select UDFNAME (Image_Col) from TargetTable".
Je suppose que ce que je suis à la recherche est une idée de combien les frais généraux serait ajoutée par la création du curseur, au lieu de le faire comme un ensemble?
Quelques infos supplémentaires:
- La taille de l'ensemble dans ce cas est max. 1000
- En réponse à la question ci-dessous, si cela est fait avec un UDF, cela signifie-t-il que le programme externe est ouvert 1000 fois en même temps? Ou y at-il des optimisations en place pour cela? Évidemment, sur un système multiprocesseur, ce n'est peut-être pas une mauvaise chose d'avoir plusieurs instances du processus en cours, mais 1000 peut être un peu trop.