Salut
j'ai un souci d'optimisation mais je ne sais pas par quel bout le prendre.
Voici d'abords mes tables :
Dans la table découpage j'ai des pays, des régions, des département, des arrondissements et des communes. Le tout fonctionnant avec le principe des id et id_parent pour savoir qui est dans quoi.
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].[Zone_Contenu] ( [Id_Zone] [int] NOT NULL , [Id_Decoupage] [int] NOT NULL , [Effet] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[Decoupage] ( [Id_Dec] [int] IDENTITY (1, 1) NOT NULL , [Nom_Dec] [varchar] (200) COLLATE French_CI_AS NULL , [Type_Dec] [int] NULL , [Dec_Parent] [int] NULL , [Numero_Dec] [varchar] (10) COLLATE French_CI_AS NULL , [Ordre] [int] NULL ) ON [PRIMARY] GO
Dans la table Zone_Contenu j'ai une liste de découpage (Id_Dec).
Pour l'instant je lance cette requête là :
Avec ce que j'ai dans la table Zone_Contenu j'ai un résultat de 226 lignes en 2 secondes. Les 226 lignes bien celles que j'attends, ni plus, ni moins.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 select distinct DC.Id_Zone, DC.Nom_Zone from zone_contenu T --inner join Decoupage DP on dp.id_zone = T.id_Decoupage --inner join Decoupage DR on dr.id_zone = T.id_Decoupage --or DR.zone_Parent = DP.id_zone inner join Decoupage DD on dd.id_zone = T.id_Decoupage --or DD.zone_Parent = DR.id_zone inner join Decoupage DA on da.id_zone = T.id_Decoupage or DA.zone_Parent = DD.id_zone inner join Decoupage DC on dc.id_zone = T.id_Decoupage or DC.zone_Parent = DA.id_zone where T.Effet = 0
Par contre, si je remets en place la jointure avec l'alias DR, j'ai toujours mes 226 lignes mais en 9 secondes.
Et si je remets en place la jointure avec l'alias DP je passe à 17 secondes.
J'aimerais optimiser cela de manière à rester à 2 secondes, vu que ça me rammène pas plus de lignes, car cette requête va être appellée trés souvent sur le site que je programme. Vu qu'on est sur du NET faut que ça aille vite.
Surtout qu'en plus, le résultat de cette requête être utiliser dans une autre requête ensuite, avant de restituer un résultat sur le site.
Pouvez-vous m'aider ?
Partager