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 :

Mauvais choix d'indexation


Sujet :

Administration SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut Mauvais choix d'indexation
    Bonjour a tous
    j'ai deux tables sur la mémé database la premier contiens 2386 ligne alors que la deuxième table contiens 36666 ligne ces deux tables contiens leurs propres index
    sur la deuxième table je rencontre des problème du deadlook en analysant le problème j'était surpris par un chose que j'arrive pas a comprendre que sur le premier table qui contient un nbre de ligne inférieur par rapport a la deuxième que l'optimiseur du requête a choisie de faire un scan d'un index cluster alors sur la deuxième table sql l' optimiseur fait un scan du table qui présente pour moi une opération très coûteuse en terme coût pour info ce dernier table ne contient pas un index cluster il contiens 3 index qui ne sont pas cluster ci joint leur script du création
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    USE [Gest_Seq]
    GO
     
    /****** Object:  Table [dbo].[Parametre]    Script Date: 10/10/2014 10:45:13 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    SET ANSI_PADDING ON
    GO
     
    CREATE TABLE [dbo].[Parametre](
    	[sq_IdSeq] [int] NOT NULL,
    	[pa_NomParam] [varchar](30) NOT NULL,
    	[pa_ValParam] [varchar](255) NULL,
    	[pa_Index] [int] NOT NULL,
    	[ty_IdTypeVar] [int] NULL,
    	[pa_Option1] [varchar](30) NULL,
    	[pa_Option2] [varchar](30) NULL,
    	[pa_Observation] [varchar](255) NULL,
     CONSTRAINT [PK_PARAMETRE] PRIMARY KEY NONCLUSTERED 
    (
    	[pa_NomParam] ASC,
    	[sq_IdSeq] ASC,
    	[pa_Index] 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]
     
    GO
     
    SET ANSI_PADDING OFF
    GO
     
    ALTER TABLE [dbo].[Parametre]  WITH NOCHECK ADD  CONSTRAINT [FK_PARAMETRE_SEQUENCE] FOREIGN KEY([sq_IdSeq])
    REFERENCES [dbo].[Sequence] ([sq_IdSeq])
    ON UPDATE CASCADE
    ON DELETE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Parametre] CHECK CONSTRAINT [FK_PARAMETRE_SEQUENCE]
    GO
     
    ALTER TABLE [dbo].[Parametre]  WITH NOCHECK ADD  CONSTRAINT [FK_PARAMETRE_TYPEVAR] FOREIGN KEY([ty_IdTypeVar])
    REFERENCES [dbo].[TypeVar] ([ty_IdTypeVar])
    ON UPDATE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Parametre] CHECK CONSTRAINT [FK_PARAMETRE_TYPEVAR]
    GO
     
    ALTER TABLE [dbo].[Parametre] ADD  CONSTRAINT [DF_PARAMETRE_pa_Index]  DEFAULT (0) FOR [pa_Index]
    GO
    ma question comment je peux optimiser ma procédure stocké de telle sorte que l'optimiseur choisi de faire un scan d'index au lieu de faire un parcours du tableau surtout que ce dernier est entrain d'évoluer chaque jour et je suis devant un phénomène de deadlook suite a cette mauvaise indexation
    Par exemple si je prend un index non cluster et je le rend cluster quel serai leur impact sur la table est ce que je peux avoir un phénomène du dégradation du performance ???
    cordialement

  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 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    1) postez le DDL intégrale de vos tables avec les contraintes ET TOUS LES INDEX
    2) postez les requêtes incriminées.
    3) quelle version /édition de SQL Server ?
    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 régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut
    1-table paramètre
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    USE [Gest_Seq]
    GO
     
    /****** Object:  Table [dbo].[Parametre]    Script Date: 10/10/2014 11:29:13 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    SET ANSI_PADDING ON
    GO
     
    CREATE TABLE [dbo].[Parametre](
        [sq_IdSeq] [int] NOT NULL,
        [pa_NomParam] [varchar](30) NOT NULL,
        [pa_ValParam] [varchar](255) NULL,
        [pa_Index] [int] NOT NULL,
        [ty_IdTypeVar] [int] NULL,
        [pa_Option1] [varchar](30) NULL,
        [pa_Option2] [varchar](30) NULL,
        [pa_Observation] [varchar](255) NULL,
     CONSTRAINT [PK_PARAMETRE] PRIMARY KEY NONCLUSTERED 
    (
        [pa_NomParam] ASC,
        [sq_IdSeq] ASC,
        [pa_Index] 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]
     
    GO
     
    SET ANSI_PADDING OFF
    GO
     
    ALTER TABLE [dbo].[Parametre]  WITH NOCHECK ADD  CONSTRAINT [FK_PARAMETRE_SEQUENCE] FOREIGN KEY([sq_IdSeq])
    REFERENCES [dbo].[Sequence] ([sq_IdSeq])
    ON UPDATE CASCADE
    ON DELETE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Parametre] CHECK CONSTRAINT [FK_PARAMETRE_SEQUENCE]
    GO
     
    ALTER TABLE [dbo].[Parametre]  WITH NOCHECK ADD  CONSTRAINT [FK_PARAMETRE_TYPEVAR] FOREIGN KEY([ty_IdTypeVar])
    REFERENCES [dbo].[TypeVar] ([ty_IdTypeVar])
    ON UPDATE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Parametre] CHECK CONSTRAINT [FK_PARAMETRE_TYPEVAR]
    GO
     
    ALTER TABLE [dbo].[Parametre] ADD  CONSTRAINT [DF_PARAMETRE_pa_Index]  DEFAULT (0) FOR [pa_Index]
    GO
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [_dta_index_Parametre_6_69575286__K1_K2_K3_K4_K5_K6_K7_K8]    Script Date: 10/10/2014 11:31:46 ******/
    CREATE NONCLUSTERED INDEX [_dta_index_Parametre_6_69575286__K1_K2_K3_K4_K5_K6_K7_K8] ON [dbo].[Parametre] 
    (
        [sq_IdSeq] ASC,
        [pa_NomParam] ASC,
        [pa_ValParam] ASC,
        [pa_Index] ASC,
        [ty_IdTypeVar] ASC,
        [pa_Option1] ASC,
        [pa_Option2] ASC,
        [pa_Observation] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [IDX_Gamme_NomParam]    Script Date: 10/10/2014 11:32:07 ******/
    CREATE NONCLUSTERED INDEX [IDX_Gamme_NomParam] ON [dbo].[Parametre] 
    (
        [sq_IdSeq] ASC,
        [pa_NomParam] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
     
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [PK_PARAMETRE]    Script Date: 10/10/2014 11:32:21 ******/
    ALTER TABLE [dbo].[Parametre] ADD  CONSTRAINT [PK_PARAMETRE] PRIMARY KEY NONCLUSTERED 
    (
        [pa_NomParam] ASC,
        [sq_IdSeq] ASC,
        [pa_Index] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    table séquence
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    USE [Gest_Seq]
    GO
     
    /****** Object:  Table [dbo].[Sequence]    Script Date: 10/10/2014 11:32:46 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    SET ANSI_PADDING ON
    GO
     
    CREATE TABLE [dbo].[Sequence](
        [sq_IdSeq] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
        [sq_IdMode] [varchar](10) NOT NULL,
        [me_IdMetier] [int] NOT NULL,
        [ml_IdMateriel] [int] NOT NULL,
        [ll_IdLogiciel] [int] NOT NULL,
        [sq_Label] [varchar](60) NOT NULL,
        [sq_Observation] [varchar](200) NULL,
        [sq_PathSequence] [varchar](255) NULL,
     CONSTRAINT [PK_SEQUENCE] PRIMARY KEY NONCLUSTERED 
    (
        [sq_IdSeq] ASC,
        [sq_IdMode] ASC,
        [me_IdMetier] ASC,
        [ml_IdMateriel] ASC,
        [ll_IdLogiciel] ASC,
        [sq_Label] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY],
     CONSTRAINT [PK2_SEQUENCE] UNIQUE NONCLUSTERED 
    (
        [sq_IdSeq] 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]
     
    GO
     
    SET ANSI_PADDING OFF
    GO
     
    ALTER TABLE [dbo].[Sequence]  WITH NOCHECK ADD  CONSTRAINT [FK_SEQUENCE_LOGICIEL] FOREIGN KEY([ll_IdLogiciel])
    REFERENCES [dbo].[Logiciel] ([ll_IdLogiciel])
    ON UPDATE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Sequence] CHECK CONSTRAINT [FK_SEQUENCE_LOGICIEL]
    GO
     
    ALTER TABLE [dbo].[Sequence]  WITH NOCHECK ADD  CONSTRAINT [FK_SEQUENCE_MATERIEL] FOREIGN KEY([ml_IdMateriel])
    REFERENCES [dbo].[Materiel] ([ml_IdMateriel])
    ON UPDATE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Sequence] CHECK CONSTRAINT [FK_SEQUENCE_MATERIEL]
    GO
     
    ALTER TABLE [dbo].[Sequence]  WITH NOCHECK ADD  CONSTRAINT [FK_SEQUENCE_METIER] FOREIGN KEY([me_IdMetier])
    REFERENCES [dbo].[Metier] ([me_IdMetier])
    ON UPDATE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Sequence] CHECK CONSTRAINT [FK_SEQUENCE_METIER]
    GO
     
    ALTER TABLE [dbo].[Sequence]  WITH NOCHECK ADD  CONSTRAINT [FK_SEQUENCE_MODE] FOREIGN KEY([sq_IdMode])
    REFERENCES [dbo].[Mode] ([mo_IdMode])
    ON UPDATE CASCADE
    NOT FOR REPLICATION 
    GO
     
    ALTER TABLE [dbo].[Sequence] CHECK CONSTRAINT [FK_SEQUENCE_MODE]
    GO
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [PK3_SEQUENCE]    Script Date: 10/10/2014 11:33:03 ******/
    CREATE UNIQUE NONCLUSTERED INDEX [PK3_SEQUENCE] ON [dbo].[Sequence] 
    (
        [sq_IdMode] ASC,
        [me_IdMetier] ASC,
        [ml_IdMateriel] ASC,
        [ll_IdLogiciel] ASC,
        [sq_Label] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
     
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [PK2_SEQUENCE]    Script Date: 10/10/2014 11:33:21 ******/
    ALTER TABLE [dbo].[Sequence] ADD  CONSTRAINT [PK2_SEQUENCE] UNIQUE NONCLUSTERED 
    (
        [sq_IdSeq] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [_dta_index_Sequence_c_6]    Script Date: 10/10/2014 11:33:42 ******/
    CREATE CLUSTERED INDEX [_dta_index_Sequence_c_6] ON [dbo].[Sequence] 
    (
        [ml_IdMateriel] ASC,
        [ll_IdLogiciel] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
     
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [_dta_index_Sequence_6_37575172__K4_K2_K5_K3_K1]    Script Date: 10/10/2014 11:34:23 ******/
    CREATE NONCLUSTERED INDEX [_dta_index_Sequence_6_37575172__K4_K2_K5_K3_K1] ON [dbo].[Sequence] 
    (
        [ml_IdMateriel] ASC,
        [sq_IdMode] ASC,
        [ll_IdLogiciel] ASC,
        [me_IdMetier] ASC,
        [sq_IdSeq] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    GO
     
     
    USE [Gest_Seq]
    GO
     
    /****** Object:  Index [_dta_index_Sequence_6_37575172__K2_K3_K4_K5_K1]    Script Date: 10/10/2014 11:34:36 ******/
    CREATE NONCLUSTERED INDEX [_dta_index_Sequence_6_37575172__K2_K3_K4_K5_K1] ON [dbo].[Sequence] 
    (
        [sq_IdMode] ASC,
        [me_IdMetier] ASC,
        [ml_IdMateriel] ASC,
        [ll_IdLogiciel] ASC,
        [sq_IdSeq] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    GO
    ci joint la procédure qui prend beaucoup du temps
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    USE [Gest_Seq]
    GO
     
    /****** Object:  StoredProcedure [dbo].[spSGM_Seq_prmGetParametre_ByTesteur]    Script Date: 10/10/2014 11:36:38 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
     
     
    /*
    spSGM_Seq_prmGetParametre_ByTesteur
    Renvoie une série de paramètres de séquence correspondants à un testeur (test sur poste)
     
    Créée le 23/05/02 par Mehdoini Abdallah
     
    CREATE PROCEDURE [dbo].[spSGM_Seq_prmGetParametre_ByTesteur]
     
    @test varchar(30),
    @poste varchar(20),
    @metier varchar(25),
    @mode varchar(25),
    @version varchar(15) = NULL,
    @InnerJoin tinyint = 1
    AS
     
    -- DLL antérieures à la v 2.6.0
    IF @version IS NULL
    BEGIN
        SELECT [sequence].sq_IdSeq, PARAMETRE.pa_NomParam, 
            PARAMETRE.pa_ValParam, PARAMETRE.pa_Index, 
            PARAMETRE.ty_IdTypeVar, PARAMETRE.pa_Option1, 
            PARAMETRE.pa_Option2, PARAMETRE.pa_Observation
        FROM [sequence] LEFT OUTER JOIN
            PARAMETRE ON [sequence].sq_idseq = PARAMETRE.sq_idseq INNER JOIN
            METIER ON [sequence].me_IdMetier = METIER.me_IdMetier INNER JOIN
            MATERIEL ON [sequence].ml_IdMateriel = MATERIEL.ml_IdMateriel INNER JOIN
            LOGICIEL ON [sequence].ll_IdLogiciel = LOGICIEL.ll_IdLogiciel
        WHERE (METIER.me_LibMetier = @metier) AND 
            ([sequence].sq_IdMode = @mode) AND 
            (LOGICIEL.ll_NomLogiciel = @test) AND  
            (MATERIEL.ml_HostName = @poste)  AND pa_nomParam IS NOT NULL
        ORDER BY [sequence].sq_IdSeq, pa_nomparam, pa_index
    END
    ELSE
    -- DLL >= v2.6.0
    BEGIN
        
        IF @InnerJoin = 1
        BEGIN
            -- Ne renvoie aucune ligne si la séquence n'a pas de paramètres
            SELECT [sequence].sq_IdSeq, PARAMETRE.pa_NomParam, 
                PARAMETRE.pa_ValParam, PARAMETRE.pa_Index, 
                PARAMETRE.ty_IdTypeVar, PARAMETRE.pa_Option1, 
                PARAMETRE.pa_Option2, PARAMETRE.pa_Observation
            FROM [sequence] LEFT OUTER JOIN
                PARAMETRE ON [sequence].sq_idseq = PARAMETRE.sq_idseq INNER JOIN
                METIER ON [sequence].me_IdMetier = METIER.me_IdMetier INNER JOIN
                MATERIEL ON [sequence].ml_IdMateriel = MATERIEL.ml_IdMateriel INNER JOIN
                LOGICIEL ON [sequence].ll_IdLogiciel = LOGICIEL.ll_IdLogiciel
            WHERE (METIER.me_LibMetier = @metier) AND 
                ([sequence].sq_IdMode = @mode) AND 
                (LOGICIEL.ll_NomLogiciel = @test) AND  
                (MATERIEL.ml_HostName = @poste)  AND
                (LOGICIEL.ll_versionLogiciel = @version) AND
                 pa_nomParam IS NOT NULL
            ORDER BY [sequence].sq_IdSeq, pa_nomparam, pa_index
        END
        ELSE
        BEGIN
            -- Renvoie une ligne même si la séquence n'a pas de paramètre (renvoie l'ID de la séquence)
            SELECT [sequence].sq_IdSeq, PARAMETRE.pa_NomParam, 
                PARAMETRE.pa_ValParam, PARAMETRE.pa_Index, 
                PARAMETRE.ty_IdTypeVar, PARAMETRE.pa_Option1, 
                PARAMETRE.pa_Option2, PARAMETRE.pa_Observation
            FROM [sequence] LEFT OUTER JOIN
                                  Parametre ON  [sequence].sq_IdSeq = Parametre.sq_IdSeq LEFT OUTER JOIN
                                  Metier ON  [sequence].me_IdMetier = Metier.me_IdMetier LEFT OUTER JOIN
                                  Materiel ON  [sequence].ml_IdMateriel = Materiel.ml_IdMateriel LEFT OUTER JOIN
                                  Logiciel ON  [sequence].ll_IdLogiciel = Logiciel.ll_IdLogiciel
            WHERE (METIER.me_LibMetier = @metier) AND 
                ([sequence].sq_IdMode = @mode) AND 
                (LOGICIEL.ll_NomLogiciel = @test) AND  
                (MATERIEL.ml_HostName = @poste) AND
                (LOGICIEL.ll_versionLogiciel = @version)
            ORDER BY [sequence].sq_IdSeq, pa_nomparam, pa_index
        END
    END
     
     
    GO
    il s'agit de sql2005 64Bit version entreprise SP4
    Images attachées Images attachées  

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Quelle valeurs de paramètres passez vous ?

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

  5. #5
    Membre régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exec spSGM_Seq_prmGetParametreByTesteur @test='Telechargement LVB2', @poste='*', @metier='PARAMETRAGE', @mode='TEST'

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    avant toute chose, que donne une exécution avec , vos stats et index sont-ils à jour?

    D'autres part un deadlock= deux transactions minimum avez vous identifiés les requètes qui entraine un deadlock?
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Créez cet index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE INDEX X_PARAMETRE_001 
       ON PARAMETRE (sq_idseq, pa_nomParam, pa_index) 
       INCLUDE (pa_ValParam, ty_IdTypeVar, pa_Option1, pa_Option2, pa_Observation);
    Essayez.
    Si cela ne va pas, supprimez les clauses ORDER BY et relancer.

    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. Bon ou mauvais choix ?
    Par zenux dans le forum Emploi
    Réponses: 6
    Dernier message: 19/06/2009, 17h11
  2. champs vides volontaire mauvais choix ?
    Par Overstone dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/06/2008, 14h29
  3. FOD au CNAM, mauvais choix ?
    Par bipbip2006 dans le forum Etudes
    Réponses: 3
    Dernier message: 10/05/2008, 16h14
  4. Choix des index dans tables sans clés étrangères ?
    Par ctobini dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/01/2008, 09h56
  5. Choix d'index
    Par User dans le forum Access
    Réponses: 2
    Dernier message: 09/09/2005, 21h16

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