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 :

Cache variable MySQL même requête résultat différent


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Juillet 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Cache variable MySQL même requête résultat différent
    Bonjour

    Ma requête au premier cout me sort 400 résultats puis pour tous les nouvelles exécutions 180. Pourquoi? Il y un cache pour les variables dans les selects? Comment changer ma requête?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT
      t.*
    FROM
      (
      SELECT
        vc_machine_num.id_machine,
        vc_machine_num.architecture_machine,
        vc_machine_num.nom_machine,
        vc_machine_num.num_version_machine,
        @rank := CASE WHEN @group = nom_machine THEN @rank +1 ELSE 1
    END rank,
    @group := vc_machine_num.nom_machine g
    FROM
      vc_machine_num
    WHERE
      sonde = 0
    ORDER BY
      vc_machine_num.architecture_machine,
      vc_machine_num.nom_machine,
      vc_machine_num.num_version_machine DESC
    ) t
    WHERE
      t.rank <= 1;

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Lancez vous les requetes suivantes dans la même session ?

    Réinitalisez ous votre variable avant d'executer la requete ?

    Par ailleurs, un petit extrait de la doc :

    As a general rule, other than in SET statements, you should never assign a value to a user variable and read the value within the same statement. For example, to increment a variable, this is okay:

    SET @a = @a + 1;

    For other statements, such as SELECT, you might get the results you expect, but this is not guaranteed. In the following statement, you might think that MySQL will evaluate @a first and then do an assignment second:
    SELECT @a, @a:=@a+1, ...;

    However, the order of evaluation for expressions involving user variables is undefined.
    En gros, comme souvent dans la doc MySQL : "Vous pouvez le faire si vous voulez, mais attention les résultats risquent d'être faux"

    Enfin, cette fonctionnalité est déprécié.

    Si vous avez une version récente de mysql (> 8 je crois), utilisez les fonctions fenétrées.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/03/2014, 18h18
  2. [WD14] Mêmes requêtes dans différents projets
    Par samus535 dans le forum WinDev
    Réponses: 13
    Dernier message: 24/02/2010, 16h09
  3. EXPLAIN même requête, résulta différent
    Par eratox dans le forum Requêtes
    Réponses: 14
    Dernier message: 07/01/2010, 23h17
  4. Même requête, résultats différents
    Par zorino dans le forum SQL
    Réponses: 8
    Dernier message: 18/06/2008, 12h31
  5. Réponses: 4
    Dernier message: 22/05/2008, 13h58

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