J'ai lu que les curseurs sont assez slow et il faut le faire, sauf si les options les évitent. J'essaie d'optimiser mes procédures stockées et l'une d'elles utilise un curseur. Il est fréquemment appelé par mon application et avec beaucoup d'utilisateurs (20000) et les lignes à mettre à jour. Je pensais que je devrais peut-être utiliser autre chose comme une alternative. Tout ce que j'essaie de faire ou de vouloir, c'est d'obtenir une liste d'enregistrements, puis d'opérer selon la valeur de chaque ligne. Donc, pour nous dire par exemple -Quelle est la lenteur des curseurs et quelles seraient les meilleures alternatives?
Employee - Id,Name,BenefitId,StartDate,EndDate
donc basée sur benefitId je dois faire le calcul différent en utilisant les dates entre StartDate et EndDate et mettre à jour les détails des employés. Je fais juste cet exemple artificiel pour donner une idée de ma situation.
Que pensez-vous de cela? Existe-t-il de meilleures alternatives pour les curseurs comme les tables temporaires ou les fonctions définies par l'utilisateur? Quand devriez-vous vraiment opter pour eux ou devrions-nous ne jamais utiliser des curseurs? Merci à tous pour leur aide.
De nombreux endroits nécessitent que toutes les bases de données soient accessibles via des procédures stockées. Et c'est une meilleure pratique de faire un traitement complexe dans un proc stocké que le dba peut ajuster les performances que de mettre des choses comme ça sur l'application. De plus, presque tous les curseurs exécutés à partir de l'application peuvent facilement être remplacés par une logique basée sur un ensemble. Les curseurs sont rarement nécessaires, sauf pour certaines tâches administratives orientées dba.Si vous insérez, mettez à jour ou supprimez à partir d'une ou de plusieurs tables, vous pouvez le faire d'une manière basée sur des ensembles à près de 100% du temps. – HLGEM
Je n'ai jamais compris pourquoi les gens insistent tellement pour garder la logique métier hors de la base de données. Je n'ai pas encore rencontré un système où les données pourraient vraiment être manipulées de manière significative sans cette logique. Peu importe le fait que nous changions beaucoup plus de langages de programmation que nous ne le faisons pour les fournisseurs de bases de données. – NotMe
C'est probablement une question de perspective et un choix de langue. La langue maternelle des programmeurs sera le langage HL dans lequel ils sont programmés à ce moment-là. La langue maternelle de DBA est SQL. Il est logique que l'on se rabat sur le familier. – SRM