Optimisation un SELECT SQLite et/ou partager une base de données SQLite sur un serveur
Bonjour,
J'ai une base de données SQLite liée à une application C#. l'application peut créer des commandes SQLite à partir d'une interface ..
j'ai une rêquete de SELECT qui prend des millisecondes en local pour s'executer mais elle pourrait prendre une dizaine de minutes si le fichier .db est sur un disque partagé sur le réseau.
Voici un exemple :
Code:
1 2 3 4 5 6 7 8
| SELECT [Sys_Central].[Id], [Sys_Central].[Demande_De_Travail],[DT_Demande_De_Travail].[Statut],[DT_Demande_De_Travail].[Descriptif],[DT_IPNs].[IPN_Demandeur],[DT_ObjectifsDT].[TypeDT],[DT_ObjectifsDT].[Jalon],[DT_ObjectifsDT].[DateJalon],[DT_ObjectifsDT].[DateFinSouhaite],[DT_Support_Projet].[Projet],[DT_Support_Projet].[Moteur],[DT_Support_Projet].[Boite],[DT_Support_Projet].[EngagementClient],[DT_Dates_Engagement].[Date_Engagement_MADC_DT],[DT_Dates_Engagement].[Date_Engagement_MADC_SE_DE],[DT_Date_Réalisé].[Date_Réalisé_MADC_DT],[DT_Date_Réalisé].[Date_Réalisé_MADC_SE_DE],[DT_Dates_Engagement].[Date_Engagement_Livraison_Fournisseur],[DT_Demande_De_Travail].[Satisfaction],[DT_Planning].[Remarque_Consultat],[DT_IPNs].[IPN_Consultant],[DT_Demande_De_Travail].[Remarque],[Id_DT_Demande_De_Travail],[Id_DT_IPNs],[Id_DT_ObjectifsDT],[Id_DT_Support_Projet],[Id_DT_Dates_Engagement],[Id_DT_Date_Réalisé],[Id_DT_Planning] FROM [Sys_Central]
LEFT JOIN [DT_Demande_De_Travail] on [DT_Demande_De_Travail].[Id] = [Sys_Central].[Id_DT_Demande_De_Travail]
LEFT JOIN [DT_IPNs] on [DT_IPNs].[Id] = [Sys_Central].[Id_DT_IPNs]
LEFT JOIN [DT_ObjectifsDT] on [DT_ObjectifsDT].[Id] = [Sys_Central].[Id_DT_ObjectifsDT]
LEFT JOIN [DT_Support_Projet] on [DT_Support_Projet].[Id] = [Sys_Central].[Id_DT_Support_Projet]
LEFT JOIN [DT_Dates_Engagement] on [DT_Dates_Engagement].[Id] = [Sys_Central].[Id_DT_Dates_Engagement]
LEFT JOIN [DT_Date_Réalisé] on [DT_Date_Réalisé].[Id] = [Sys_Central].[Id_DT_Date_Réalisé]
LEFT JOIN [DT_Planning] on [DT_Planning].[Id] = [Sys_Central].[Id_DT_Planning] |
je sais très bien que ce SELECT est énorme, 6 LEFT JOIN est difficile à optimiser mais la requête ne renvoi pas plus que 1000 lignes (le LEFT JOIN est essentiel) sachant qu'elle ne dure que quelques secondes maximum en local mais elle prend beaucoup plus de temps sur un serveur qui n'est pas très rapide ( et des fois c'est rapide sur le serveur ça dépend du réseau) .
Donc j'ai deux questions:
1 - est ce que c'est possible d'optimiser cette requête avec des indexations (sachant que les plupart des colonnes des jointure sont des clés primaires ça veut ils s'indexent automatiquement).
2 - comment puis-je partager une base de données SQLite sur un serveur Client-Serveur comme MySQL ou ORACLE .. pour que ça soit plus stable.
Je vous remercie pour votre temps.