Combien plus vite la seconde dépend vraiment d'un trop grand nombre de choses. La surcharge réseau peut être insignifiante par rapport à la taille de vos ensembles de résultats.
Il existe une autre alternative (qui devrait être plus rapide que l'une ou l'autre selon le comportement de verrouillage), à savoir call all of them asynchronously - alors votre page peut effectivement se terminer lorsque la plus longue est terminée. Évidemment, cela nécessitera un codage supplémentaire.
Dans cet exemple, il n'y a qu'un seul préfixe SP. Nous supposons que les rendements SP soit un ensemble de lignes que le client sera divisé/processus ou plusieurs jeux de lignes:
int[] ids; // array of ids
CallSQLStoredProc(ids) // stored procedure returns more than one row for each id
Dans cet exemple, les frais généraux d'appel SP sont n fois l'appel unique.et les appels sont sérialisés:
foreach(item in mylist) {
CallSQLStoredProc(item.id);
}
Dans la troisième alternative:
foreach(item in mylist) {
StartSQLStoredProc(item.id);
}
// Continue building the page until you reach a point where you absolutely have to have the data
wait();
Cela a encore les frais généraux d'appel n DB, mais l'amélioration de la performance peut dépendre de la capacité du serveur SQL et réseau afin de paralléliser la charge de travail. En outre, vous bénéficiez de la possibilité de démarrer SQL Server pendant la création de la page.
La seule solution SP peut encore gagner sur, en particulier si elle peut assembler un seul jeu de résultats avec une Union où le serveur SQL peut paralléliser la tâche. Cependant, si les ensembles de résultats ont des schémas séparés ou si l'UNION ne peut pas fonctionner correctement, une solution asynchrone SP multiple peut l'éliminer (et peut également tirer parti de la possibilité d'effectuer d'autres tâches dans la page).
quel DB utilisez-vous? Je recherche cette fonction "spiltCSVs" dans SQL Server. Google "spiltCSVs" renvoie-moi 1 résultat :-) –
C'est une fonction d'utilité chaque écrit eux-mêmes si nécessaire. http://stackoverflow.com/questions/314824/t-sql-opposite-to-string-concatenation-how-to-split-string-into-multiple-recor –