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

MS SQL Server Discussion :

Besoin d'aide pour optimiser une petite query sql


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut Besoin d'aide pour optimiser une petite query sql
    Salut tout le monde,

    Quelqu'un saurait-il comment optimiser cette requête ? ^^

    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
    17
    18
    19
    20
    21
    22
    23
    24
     
    	UPDATE #temp1
    	SET #temp2.mainarea_listindex = (SELECT area_listindex 
    																	 	FROM #temp1 t1
    																		WHERE continent_IdCountryGroup IS NOT NULL
    																		AND country_IdCountry IS NOT NULL
    																		AND region1_IdCountryRegionAllGroup IS NOT NULL
    																		AND region2_IdRegion_CountryRegionAll IS NULL
    																		AND t1.continent_IdCountryGroup = #temp2.continent_IdCountryGroup
    																		AND t1.country_IdCountry = #temp2.country_IdCountry
    																		AND t1.region1_IdCountryRegionAllGroup = #temp2.region1_IdCountryRegionAllGroup)																
    	WHERE continent_IdCountryGroup IS NOT NULL
    	AND country_IdCountry IS NOT NULL
    	AND region1_IdCountryRegionAllGroup IS NOT NULL
    	AND region2_IdRegion_CountryRegionAll IS NOT NULL
    	AND EXISTS (SELECT 1
    							FROM #temp1 t1
    							WHERE continent_IdCountryGroup IS NOT NULL
    							AND country_IdCountry IS NOT NULL
    							AND region1_IdCountryRegionAllGroup IS NOT NULL
    							AND region2_IdRegion_CountryRegionAll IS NULL
    							AND t1.continent_IdCountryGroup = #temp1.continent_IdCountryGroup
    							AND t1.country_IdCountry = #temp1.country_IdCountry
    							AND t1.region1_IdCountryRegionAllGroup = #temp1.region1_IdCountryRegionAllGroup)

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Sans connaître la description intégrale des tables en jeu : colonnes, type de données, contraintes et index toute optimisation est impossible !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Sans connaître la description intégrale des tables en jeu : colonnes, type de données, contraintes et index toute optimisation est impossible !

    A +
    Je comprends, ici ce sont tous des INT et la table n'a pas d'index, c'est une petite table ou il y a toujours au plus 5 rows max

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    c'est une petite table ou il y a toujours au plus 5 rows max
    Cela aurait été bien de nous donner un jeu de données d'exemple contenu dans votre table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE #temp1
    SET #temp2.mainarea_listindex =
    Quelle table temporaire souhaitez vous mettre à jour exactement ?

    Sachez que :

    - l'utilisation de tables temporaires est contre-performant : comme toute table, elle est crée dans un fichier de données. C'est transparent pour vous mais si vous en avez la possibilité, regardez donc dans TempDB,
    - vous qualifiez des objets à certains endroits et pas à d'autres, cela n'est pas bon non plus,
    - il est préférable d'utiliser * dans une requête EXISTS

    Le mieux aurait donc été que vous nous donniez comme vous l'a demandé SQLPro le DDL de vos tables (non temporaires) avec le traitement que vous voulez faire.

    @++

  5. #5
    Membre expérimenté
    Inscrit en
    Juin 2006
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 229
    Par défaut
    Bonjour,

    elsuket : vous dites que l'utilisation de tables temporaires est "contre-performant".

    Je profite de ce post pour demander s'il y'a une alternative "plus performante" que les tables temporaires quand on a besoin de brasser des données dans une procédure stockée.

    Merci

    Zabriskir

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Bien entendu, c'est simple il suffit de s'en passer !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Besoin d'aide pour ecrire une Proc en SQL SERVER
    Par dbjr81 dans le forum Développement
    Réponses: 5
    Dernier message: 10/10/2014, 19h16
  2. Réponses: 11
    Dernier message: 04/04/2012, 13h35
  3. Réponses: 2
    Dernier message: 16/11/2008, 20h56
  4. besoin d'aide pour optimiser une requête
    Par jisse dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2006, 09h41

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