2010-10-15 6 views
0

Supposons que nous ayons une table avec collumns (A, B, C) Nous voulons rechercher cette table basée sur un critère qui est calculé à partir collumn C ... et d'autres paramètresrequête SQL et la recherche valeur calculée

Parce que le calcul est complexe et ne peut pas être représenté dans la requête sql ... que dois-je faire? Faire le filtrage au niveau de l'application?

+1

Quel serveur utilisez-vous? –

+1

Ne pouvez-vous pas stocker le résultat du calcul complexe avec A, B et C au lieu de le calculer lors de la sélection des lignes? –

+0

Spécifiez votre base de données car des choses assez complexes peuvent être faites en SQL (par exemple, dans postgres, il est assez facile de mélanger python, perl, tcl ou pl avec SQL). – Unreason

Répondre

1

Pas de solution miracle ici.

Pros

Vous pouvez avoir des calculs assez complexes au niveau de la base de données, les avantages de le faire au niveau de la base de données sont que le SGBDR est plus proche des données et le transport des données avant et en arrière des disques, par SGBDR , à travers le réseau, à l'application est généralement plus cher que de faire des calculs dans le SGBDR (où SQL est exécuté) et l'expédition des résultats uniquement à l'application.

Un autre pro est que la centralisation de la logique rend le système plus facile à entretenir, mais ...

Contre

... en fonction de votre base de données de choix, vous pourriez ne pas avoir un large choix des langages de programmation disponibles dans la couche SGBDR, donc pour les choses plus complexes, il peut être difficile de coder votre tâche dans une variante SQL procédurale. Les autres raisons de ne pas le faire au niveau du SGBDR sont si les calculs sont gourmands en ressources (CPU, mémoire, pensez aux problèmes O (n!) Et autres) et la taille de la sortie est comparable à l'entrée. Dans ce cas, l'envoi des données du côté applicatif peut être intéressant pour décharger les ressources du serveur de base de données (vous distribuez en quelque sorte les tâches informatiques), mais si votre serveur d'applications réside sur le même matériel que le serveur de base de données, peut pousser tout le chemin vers les clients, regardez l'architecture à trois niveaux et à plusieurs niveaux).

+0

microsoft sql j'utilise ... comment puis-je utiliser un langage de programmation avec sql server? – GorillaApe

+0

@Parhs, vous pouvez commencer par http://www.aspfree.com/c/a/MS-SQL-Server/Implementing-Managed-code-in-SQL-Server-2005-using-Visual-Studio-NET- 2005 / – Unreason

0

Une alternative pourrait être de créer une fonction/procédure stockée sur la base de données qui font le calcul pour vous et appelez ensuite dans la clause where de votre requête

Questions connexes