IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Fonction et vitesse d'exécution ?


Sujet :

SQL Procédural MySQL

  1. #21
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    Citation Envoyé par trucmuche2005
    J'apprends, petit à petit, et échanger avec des pros et des gens plus compétent fait partie de l'apprentissage.
    Developpez est un site consacré pour des professionnels et non pour des amateurs débutants.
    En venant ici, vous devez avoir le minimum requis, sinon nos échanges sont des pertes de temps.

    Une connerie n'est pas une insulte mais une erreur de raisonnement !

    Citation Envoyé par trucmuche2005
    C'est EXACTEMENT ma question initiale mais je cherche à rester dans MySQL
    Non, ce n'est pas votre question initiale. La voici, votre question initiale :
    Citation Envoyé par trucmuche2005
    Je m'interroge sur une chose concernant la vitesse d'exécution dans le cas où on utilise des fonctions par rapport à si on ne les utilisait pas.
    On vous a répondu que l'usage d'une fonction est beaucoup plus lente que l'approche ensembliste qui est la bonne approche.
    SQLPRO vous a démontré la différence, mais je pense que vous n'avez pas bien compris son message.

    Citation Envoyé par trucmuche2005
    et ma question est donc : "comment créer ce script dédié dont vous parlez en MySQL (cad sans sortir de MySQL) ??".
    En faisant des scripts mysql, vous avez la possibilité de mettre un "source nom_de_votre_script" pour faire l'équivalent d'un "include". Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from `modele`;
     
    source test_1.sql
    Dans le script, j'appelle par la commande "source" un autre script qui va s'exécuter à la suite du "select".

    Citation Envoyé par trucmuche2005
    À vous lire, je comprends que ce n'est pas en terme de fonction comme je le tentais (cfr mon premier post).
    Vous avez pris le problème à l'envers. Vous avez pensé en premier à la maintenance et non à l'optimisation de votre requête.
    Peu importe que votre requête soit appelé 1 fois ou 50 fois. Elle doit être optimisée et c'est ce que vous dévez résoudre en premier.
    Vient ensuite la maintenance. La commande "source" est comme une fonction dans les langage de programmation, enfin je devrais plutôt dire comme un "include".
    Cela évite de répéter le même taitement et donc d'améliorer la maintenance et l'organisation de votre application.

    Citation Envoyé par aieeeuuuuu
    OK
    Par contre je n'ai pas de MySQL sous la main et pas le temps (surtout pas l'envie en fait) de l'installer.
    Donc votre démonstration ne sert à rien car ce qui est valable pour Microsoft SQL Server, ne l'est pas pour MySql et vice-versa.

    Citation Envoyé par aieeeuuuuu
    Comme je le disais, la meilleure solution dépendra de la répartition des données.
    Sur ce point, je vous rejoins.

    Mais quand j'ai fait le test, j'avais constaté que dans la première solution, MySql faisait cinq lectures, tandis que dans la seconde solution, MySql n'en faisait que trois.
    Le problème repose dans la façon dont MySql gère les lignes d'une table.
    Et nous savons tous que MySql n'est pas des plus performants !

    Il n'y a pas de règles générales concernant tous les SGBDR car chacun est développé selon des règles qui leurs sont propres.
    Ce qui est valable pour l'un, ne l'est pas pour un autre.
    Seul les tests permettrons de démontrer leur validité.

    Citation Envoyé par aieeeuuuuu
    Enfin tout ça nous éloigne un peu plus de la question initiale, qui est de savoir si il y avait une différence de performance entre utiliser une fonction ou mettre directement son contenu dans la requête.
    En ce qui me concerne, je rejoins SQLPRO où l'approche ensembliste est à privilégié par rapport à l'approche séquentielle.

    Citation Envoyé par aieeeuuuuu
    Toutefois je doute que ce type de fonction existe sous MySQL.
    Je confirme, cela n'existe pas sous MySql.

    Citation Envoyé par aieeeuuuuu
    Par ailleurs, les fonctions multi-instructions empêchent le parallélisme sous SQL Server, mais la question ne se pose pas sous MySQL qui n'en fait pas de toute façon...
    Le mutliprocessing est hors sujet en ce qui concerne la question initiale sous MySql.

    Merci quand même d'avoir fait le test !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Developpez est un site consacré pour des professionnels et non pour des amateurs débutants.
    En venant ici, vous devez avoir le minimum requis, sinon nos échanges sont des pertes de temps.
    Merci pour votre remarque, qui me surprend pas mal au vu du nombre de questions posées auxquelles je peux répondre en connaissant si peu... De plus, je pensais naïvement que le forum Developpez était un endroit où des moins connaisseurs pouvaient justement échanger avec des personnes plus expérimentées dans le but d'apprendre (un peu), à leur mesure. Bref, un lieu d'échange quoi. J'apprends maintenant que cela n'est pas le cas. Ah. Dans ce cas, pourriez-vous me conseiller un site où des débutants médiocres désireux d'apprendre comme moi pourraient échanger avec d'autres débutants médiocres en évitant de trop échanger avec des personnes compétentes pour éviter de leur faire perdre du temps ? Je m'empresserai de m'inscrire sur ce site... :-)
    Une chose m'interroge quand même sur vous, les gens compétents : pourquoi vous venez pour répondre à des questions ? Vous n'avez pas mieux à faire dites ? :-D Sérieusement...

    Alors sorry si ma question initiale était posée naïvement, incorrectement, et/ou était le reflet d'autres habitudes pas toujours très catholiques que j'ai voulu mimer dans mon début d'apprentissage de MySQL, je l'admets et tout cela se discute. Mais un peu de tolérance svp. Je n'ai ni l'ambition de développer un grand logiciel, ni l'ambition de devenir le développeur de l'année. Je suis juste curieux et je me pose des questions, rien de plus.
    Et puis si cela ne vous convient pas, rien ne vous oblige à perdre votre temps dans les topics que j'ouvre... Vous pouvez laisser les gens médiocres y répondre. Vous pouvez même éviter de les ouvrir, je ne vous en voudrai jamais :-D Bref, merci pour votre tolérance. Et un merci (vraiment sincère) à ceux qui auront fait autre chose dans ce topic que de dénigrer qui ou quoi que ce soit du haut de leur superbe et qui auront tenté de faire avancer le schmilblik, aussi élémentaire qu'il soit.

Discussions similaires

  1. vitesse d'exécution d'une fonction personalisée
    Par metaldan dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/04/2010, 18h27
  2. [VB.NET, CF 2.0, SQLite] Vitesse d'exécution d'une fonction
    Par agro dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 16/04/2009, 13h07
  3. Réponses: 2
    Dernier message: 24/08/2006, 10h46
  4. Réponses: 4
    Dernier message: 02/04/2006, 18h42
  5. Créer une fonction mathématique pendant l'exécution
    Par zeprogrameur dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2004, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo