Bonjour à tous,
J'ai constaté à plusieurs reprises un problème de performance sur certaines requêtes du même genre.
Je vous explique :
J'ai une table toute simple qui contient des liens père fils :
Cette table contient 150 000 lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE [dbo].[SEBM]( [CodePere] [varchar](30) NOT NULL, [CodeFils] [varchar](30) NOT NULL, CONSTRAINT [PK_SEBM] PRIMARY KEY CLUSTERED ( [CodePere] ASC, [CodeFils] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
si je lance la requête suivante, j'ai une réponse instantannée :
Si je lance la requête suivante, ça ne répond qu'au bout de 6 secondes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ;WITH TREE AS ( SELECT CodePere as Racine, CodePere, CodeFils FROM SEBM UNION ALL SELECT TREE.Racine, SEBM.CodePere, SEBM.CodeFils FROM TREE INNER JOIN SEBM ON SEBM.CodePere = TREE.CodeFils ) SELECT * FROM TREE where Racine='11018962'
L'option dans la requête est une tentative pour arranger les choses, mais sans succès...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 declare @Valeur varchar(30) = '11018962' ;WITH TREE AS ( SELECT CodePere as Racine, CodePere, CodeFils FROM SEBM UNION ALL SELECT TREE.Racine, SEBM.CodePere, SEBM.CodeFils FROM TREE INNER JOIN SEBM ON SEBM.CodePere = TREE.CodeFils ) SELECT * FROM TREE where Racine=@Valeur OPTION ( OPTIMIZE FOR (@Valeur = '11018962'))
Auriez-vous déjà rencontré un tel problème ?
Si oui, avez vous trouvé une parade ?
Merci d'avance,
Seb








Répondre avec citation
Partager