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

Administration SQL Server Discussion :

optimisation d'une Requête


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut optimisation d'une Requête
    bonjour à tous,
    j'ai ecris cette requette qui prend assez de temps pour s'exécuté, j'aimerais avoir votre soutient a fin de l'optimisé.
    coté index, jointure et autres.
    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
    Insert Sto_Imprime_Temp
    	Select distinct
    		@Poste_Client,
    		@Id_Saisie,
    		A.Code_Type_Imprime,
    		Numero_Imprime,
    		'' Numero_Identification,
    		'0' As Alloue
    	From 	Sto_Imprime A
    	Join 	Sto_Type_Imprime_Automobile B On (B.Code_Type_Imprime = A.Code_Type_Imprime)
    	Where 	Code_Intermediaire = @Code_Intermediaire And
    	Code_Type_Carte		= 0 And
    	Code_Statut_Imprime = 'EV' And
    	Numero_Quittance 	= 'X'
    	and Numero_Imprime not in (select distinct Numero_Attestation from Attestation) 
    	and A.Code_Type_Imprime=@Code_Type_Imprime
    	-- Order By 1,2
    Merci de votre soutient

  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
    Par défaut
    Bonjour,

    Il aurait fallu la structure des tables pour vous proposer les index directement.
    Là, on ne sait pas de quelle table viennent quelle colonnes.

    Est-ce que l'intégrité référentielle est mise en place ?

    L'idée générale est de créer un index reprenant les colonnes qui vous servent de filtre, en commençant par les filtres les plus sélectifs, et en ajoutant éventuellement les autres colonnes du SELECT en clause INCLUDE...

  3. #3
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    voici la structure des Tables,
    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
    CREATE TABLE [dbo].[Sto_Imprime](
    	[Numero_Operation] [char](10) NOT NULL,
    	[Code_Type_Imprime] [char](1) NOT NULL,
    	[Numero_Imprime] [char](10) NOT NULL,
    	[Cout_Unitaire] [money] NOT NULL,
    	[Code_Statut_Imprime] [char](2) NOT NULL,
    	[Code_Magasin] [char](4) NOT NULL,
    	[Code_Intermediaire] [char](4) NOT NULL,
    	[Numero_Quittance] [char](16) NOT NULL,
    	[Numero_Identification] [varchar](15) NOT NULL,
     CONSTRAINT [PK_Sto_Imprime] PRIMARY KEY NONCLUSTERED 
    (
    	[Numero_Operation] ASC,
    	[Code_Type_Imprime] ASC,
    	[Numero_Imprime] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 70) ON [PRIMARY]
    ) ON [PRIMARY]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE [dbo].[Sto_Type_Imprime_Automobile](
    	[Code_Type_Imprime] [char](1) NOT NULL,
    	[Code_Type_Carte] [smallint] NOT NULL,
    	[Libelle_Type_Imprime] [varchar](50) NULL,
    	[Code_Reference] [char](1) NULL,
     CONSTRAINT [PK_Sto_Type_Imprime_Automobile] PRIMARY KEY CLUSTERED 
    (
    	[Code_Type_Imprime] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    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
    CREATE TABLE [dbo].[Attestation](
    	[Numero_Quittance] [char](16) NOT NULL,
    	[Numero_Immatriculation] [char](15) NOT NULL,
    	[Numero_Reference] [char](16) NULL,
    	[Numero_Attestation] [char](10) NOT NULL,
    	[Numero_Carte_Extension] [char](10) NULL,
    	[Date_saisie] [datetime] NULL,
    	[Utilisateur] [varchar](30) NULL,
    	[Date_Effet] [datetime] NULL,
    	[Date_Expiration] [datetime] NULL,
    	[Ok_Imprime] [char](1) NULL,
    	[Ok_Valide] [char](1) NULL,
    	[Ok_Carte] [char](1) NULL,
     CONSTRAINT [PK_Attestation] PRIMARY KEY CLUSTERED 
    (
    	[Numero_Quittance] ASC,
    	[Numero_Immatriculation] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    ) ON [PRIMARY]
    qui entre en jeu.
    s'il te plait explique moi un peu l'intégrité référentielle .
    je fais parallèlement une recherche sur google.

  4. #4
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Citation Envoyé par solo190 Voir le message
    s'il te plait explique moi un peu l'intégrité référentielle .

  5. #5
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    voici un index que j'ai crée sur la table Sto_Imprime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Create Index X_Where on Sto_Imprime (code_intermediaire ,Code_Statut_Imprime,Numero_Quittance,Numero_Imprime)
    .
    mais le problème de lenteur persiste

  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 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Votre modèle est clairement mal conçu.
    1) vous avez des clefs primaires composés qui pénalisent les performances.
    2) vos clefs sont sémantique ce qui posera de nombreux problèmes si évolutions il y a des données (UPDATE)
    3) les types utilisés pour vos colonnes composant les clefs sont des littéraux ce qui est encore plus long et plus lent que du numérique du fait de la gestion des collations inhérente à ce type de données.

    Commencez par revoir votre modèle et placer des clefs auto-incrémentées numérique de type BIGINT et faites de vos anciennes clefs des contraintes d’unicité;
    Enfin, posez vos contraintes d’intégrité référentielle et indexez les.

    Avec cela en principe plus de lenteur !

    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/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation d'une requête
    Par Louis-Guillaume Morand dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/12/2005, 18h21
  2. Optimisation d'une requête d'insertion
    Par fdraven dans le forum Oracle
    Réponses: 15
    Dernier message: 01/12/2005, 14h00
  3. Optimisation d'une requête patchwork
    Par ARRG dans le forum Langage SQL
    Réponses: 1
    Dernier message: 11/09/2005, 15h23
  4. optimisation d'une requête avec jointure
    Par champijulie dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/07/2005, 09h45
  5. [DB2] Optimisation d'une requête
    Par ahoyeau dans le forum DB2
    Réponses: 7
    Dernier message: 11/03/2005, 17h54

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