Stack Overflowers:L'alternative la plus rapide à Datatable.Select() pour restreindre les données en cache?
J'ai une fonction de recherche sur le site Web de mon entreprise (basée sur .NET 2.0) qui vous permet d'affiner le catalogue de produits en utilisant jusqu'à 9 champs différents. À l'heure actuelle, après avoir effectué vos sélections sur le frontend, je construis une requête dynamique et je tape sur la base de données (SQL Server) pour obtenir la liste des numéros d'éléments qui en résulte. Je voudrais éviter de frapper la base de données à chaque fois et faire tout cela en mémoire pour des résultats plus rapides. Fondamentalement, une "table" de 3500 à 4500 lignes avec 10 colonnes: le numéro d'article (qui pourrait être une clé primaire) et les 9 champs d'attributs (qui ont des valeurs répétées pour beaucoup de lignes). Il peut y avoir un certain nombre de différentes recherches entre les 9 colonnes pour obtenir les éléments souhaités:
- colonne A = « foo » et la colonne D « bar » =
- Colonne B = « foo » et la colonne C = 'bar' et la colonne I = 'me'
- Colonne H = 'foo'
- etc ...
d'après mes recherches, la fonction .Choisir() semble être la façon la plus lente à effectuer la recherche, mais il me semble être le moyen le plus rapide et le plus facile à effectuer la le rétrécissement des recherches pour obtenir la liste des numéros d'article:
MyDataSet.Select("Column B = 'foo' AND Column E = 'bar' AND Column I = 'me'")
Dans mon cas particulier, quelle méthode proposez-vous que je l'utilise comme une alternative qui a la même fonctionnalité de rétrécissement et de meilleures performances au lieu de se contenter de la datatable.select () méthode?
Désolé, j'aurais dû préciser que les requêtes dynamiques que j'exécute actuellement sont assez rapides car tout est indexé correctement, je veux juste que l'application fonctionne encore plus vite en ne passant pas du tout si je n'ai pas à . – NinjaBomb
@NinjaBomb: vous allez toujours passer par-dessus le fil (entre le client et le serveur) avec cette approche. Tout ce que vous évitez est le voyage entre le serveur et la base de données (ce qui ne devrait pas être un goulot d'étranglement pour vous de toute façon), et c'est au prix d'une grande partie de la mémoire du serveur. – MusiGenesis
Que pensent les experts de la mise en cache des ensembles de résultats que je reçois de la base de données au cas où quelqu'un exécuterait exactement la même recherche dans un délai donné? – NinjaBomb