[SQL 2000] Optimisation requête avec jointure multiple
Salut
j'ai un souci d'optimisation mais je ne sais pas par quel bout le prendre.
Voici d'abords mes tables :
Code:
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 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.
Dans la table Zone_Contenu j'ai une liste de découpage (Id_Dec).
Pour l'instant je lance cette requête là :
Code:
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 |
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.
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 ?