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

PHP & Base de données Discussion :

Optimisation d'un UPDATE


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Optimisation d'un UPDATE
    Bonjour à tous,

    Je souhaite optimiser cette requête qui reste encore trop coûteuse... J'ai tiré la requête dans tous les sens mais je n'arrive pas à en trouver une équivalente plus performante

    Code : 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
    UPDATE table_1
     
    SET param_1= (
    	SELECT	CASE when param_2='val_1' then 3 ELSE
    		CASE when param_2='val_2' then 2 ELSE 1 END
    	END
    	FROM table_1 t0
    	WHERE t0.param_3 IS NULL
    		AND table_1.param_4 = t0.param_4
    		AND table_1.param_5=t0.param_5
    		AND table_1.param_6=t0.param_6
    	ORDER BY param_2 ASC
    	LIMIT 1
    	)
    WHERE param_3 IS NULL
    AND	param_4='val_4';
    Quelqu'un à une idée ?

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je ne connais pas postgresql, mais instinctivement tu devrais sortir ta sous-requete du SET et la mettre dans ton update, ainsi elle ne sera pas executée pour chaque ligne de table_1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE table_1, (SELECT FROM WHERE ) AS R1
    SET 
    WHERE

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    L'explain donne quoi ?

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 20
    Points
    20
    Par défaut
    Salut,

    tu as param_2 et param_4 au moins qui sont des chaines de caracteres et les varchars sont gourmands en resource, la taille de la donnee est plus grande donc la complexite est plus grande pour executer la clause de comparaison.

    Si le 5e caractere seulement compte (toujours 'val_x') alors tu peux peut etre utiliser SUBSTRING() ou RIGHT() pour ne verifier que ce dernier caractere par exemple. Mais encore mieux si tu pouvais faire tes jointures et tes clause where sur des int alors la beaucoup moins de problemes

Discussions similaires

  1. Comment optimiser une requete Update SQL ?
    Par Battosaiii dans le forum SQL
    Réponses: 3
    Dernier message: 20/07/2011, 13h51
  2. [Optimisation] Requêtes d'update avec jointure?
    Par GyZmoO dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/10/2009, 13h50
  3. [Requête SQL] Optimisation de plusieurs UPDATE SET FROM
    Par dens19 dans le forum Développement
    Réponses: 6
    Dernier message: 13/03/2009, 16h51
  4. optimisation d'un update where(select)
    Par nimbus_77 dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/07/2008, 12h38
  5. [ASE][T-SQL] Optimisation d'un update
    Par metheorn dans le forum Sybase
    Réponses: 2
    Dernier message: 06/03/2006, 13h12

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