2010-07-27 3 views
3

Je ne suis pas très expérimenté avec les requêtes de base de données de programmation ou de script, et je semble en venir à compter sur la manipulation des résultats d'une base de données au lieu de requête complète qui permettrait d'atteindre mon objectif final.est la pratique courante pour manipuler les résultats de requête dans le code

En fait, dans certains cas, je change complètement la nature des résultats en combinant les valeurs sur les colonnes et en supprimant les lignes. Il semble simplement plus facile de manipuler le code dans une boucle plutôt que d'écrire une requête plus complexe.

Bien sûr, la plupart du temps, je peux écrire la requête et obtenir les résultats du serveur exactement comment je veux le consommer. Mais il y a ces occasions où je cours les résultats pour plus de filtrage, parce que je ne sais juste pas comment le faire dans sql mais le codage semble assez simple.

Répondre

3

Cela dépend. Généralement, vous devriez laisser la base de données faire les choses que les bases de données sont bonnes: filtrer, trier et joindre des données. Transformations post-requête complexes de données (logique métier) que vous devriez généralement faire dans votre code d'application, et non dans la requête, d'autant plus que le débogage de ces choses peut vraiment être horrible en SQL, mais relativement sans douleur. Si vous êtes sûr que vos jeux de données vont toujours être très petits (disons ... moins de quelques centaines d'enregistrements) et vos manipulations toujours simples, faites vos manipulations dans le code de votre application plutôt que dans SQL ne fera probablement aucune différence dans la performance globale ou la maintenabilité. D'autre part, si vos datasets ont la possibilité de grandir un jour (vous devriez certainement tester cela - remplissez vos tables avec des données fictives pour le tester!) Alors vous courez le risque d'écrire du code d'application qui est insupportablement maladroit et utilise probablement des quantités monstres de mémoire pour faire des choses que la base de données ferait beaucoup mieux pour vous. À ce stade, vous devrez peut-être examiner les manipulations que la base de données peut effectuer plus efficacement par rapport au code de l'application et répartir la charge de travail le plus efficacement possible. Pour ce faire, vous devrez tester et analyser les données et les manipulations avec lesquelles vous travaillez.

La réponse finale? Décidez en fonction de vos besoins comment scinder correctement le travail qui peut être fait efficacement par le serveur de base de données (en SQL) et peut être fait efficacement et proprement dans votre code d'application.

0

IMO, manipulez le code aussi peu que possible. Souvent, vous pouvez obtenir les requêtes très près de ce que vous voulez. Cependant, si vous ne pouvez pas, manipuler des données dans le code n'est pas intrinsèquement une mauvaise chose.

1

Cela dépend de la nature de ces opérations. SQL n'est pas vraiment adapté aux calculs procéduraux qui ne peuvent pas être décrits dans les requêtes relationnelles. Cependant, lorsque vous manipulez de grands ensembles de données, vous devez veiller à ne pas extraire trop de données pour un traitement ultérieur au client et à en traiter le plus possible sur le serveur.

1

En règle générale, vous devez effectuer une manipulation de données en SQL, mais évitez d'avoir à manipuler des données basées sur la logique métier car cela rend le test très difficile et peut devenir source de bogues.

Questions connexes