J'ai actuellement une requête SQL qui est actuellement appelé à plusieurs reprises comme celui-ci (pseudo code):Fine tune certaines fonctions SQL appelé plusieurs fois
foreach(KeyValuePair kvp in someMapList)
{
select col1 from table where col2 = kvp.key and col3 = kvp.value;
//do some processing on the returned value
}
Le pourrait évidemment appeler au-dessus de la base de données d'un grand nombre de fois si elle est une grande liste de paires. Quelqu'un peut-il penser à un SQL plus efficace qui pourrait essentiellement renvoyer une liste de valeurs spécifiques basées sur une liste de deux informations uniques de sorte que le traitement peut être fait en masse? Une solution évidente serait de construire un gros morceau de SQL avec des OR mais cela serait probablement inefficace?
Merci
Carl
Il est probablement plus inefficace de faire un grand nombre d'appels à sql-server puis de construire une requête avec beaucoup de ou. Assurez-vous simplement que les index sont corrects. –
Faites-le en un coup, même si cela signifie beaucoup de 'ou'. Essayez de ne jamais interroger dans une boucle. – Jay
J'ai * juste * remarqué l'étiquette nhibernate sur cette question. Si le pseudo-code que vous montrez utilise actuellement HQL ou ICriteria, vous pouvez simplement laisser NHibernate le regrouper en un seul lot pour vous: http://nhforge.org/blogs/nhibernate/archive/2008/08/31/the- query-batcher.aspx – Jay