Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2925 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE-SQL] Optimisation d'une vue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ORACLE-SQL] Optimisation d'une vue

n°256738
thecoin
Chasseur de chasseur de canard
Posté le 29-11-2002 à 08:54:49  profilanswer
 

J'ai une vue qui comporte beaucoup de table et donc de jointure. Le problème c'est que les tables comporte de plus en plus de données et les temps de réponse explose. Comment faire pour l'optimisé alors qu'il n'y a que des jointures? Si je la sépare en plusieur vue que je regroupe ensuite en une seule, les perfs seront-elles meilleur?

mood
Publicité
Posté le 29-11-2002 à 08:54:49  profilanswer
 

n°256810
Mara's dad
Yes I can !
Posté le 29-11-2002 à 10:39:55  profilanswer
 

C'est une vue dans ce genre là ?
 

Code :
  1. CREATE OR REPLACE VIEW ERES105
  2. AS
  3. SELECT  ResPvResultat.Robid ResPvResultat_Robid,
  4. RefConcours.NumeroSequence Num_Concours,
  5. RefConcours.Designation ,
  6. RefEpreuve.NomPrix ,
  7. RefEpreuve.NumeroSequence Num_Epreuve,
  8. RefEpreuve.Robid Epreuve_Robid ,
  9. RefDiscipline.Code "Discipline" ,
  10. Refengagement.ORDREPASSAGE num_depart ,
  11. RefCheval.NumeroSire ,
  12. RefCheval.Nom ,
  13. RefLicencie.Nom || ' ' || RefLicencie.Prenom Licencie,
  14. RefLicencie.LicenceDnseFfe ,
  15. ResPerfCSOHunter.Engagement_Robid ,
  16. 'Temps (s)' Champ1 ,
  17. to_char(ResPerfCSOHunter.Temps / 100) Valeur_Champ1 ,
  18. '' Champ2 ,
  19. '' Valeur_Champ2 ,
  20. '' Champ3 ,
  21. '' Valeur_Champ3 ,
  22. '' Champ4 ,
  23.  '' Valeur_Champ4 ,
  24. ResPerfCSOHunter.POINTS ,
  25. (ResPerfCSOHunter.GAINS / 100) GAINS,
  26. (ResPerfCSOHunter.PRIME / 100) PRIME,
  27. ResPerfCSOHunter.PLACE ,
  28. ResPvResultat.NbEngagements ,
  29. ResPVResultat.NBPARTANT ,
  30. ResPVResultat.NBFORFAITS ,
  31. ResPVResultat.NBNONPARTANT  ,
  32. ResPVResultat.NbPrix ,
  33. ResPVResultat.SommeDistribuee SOMMEDISTRIBUEE ,
  34. RefConcours.DateDebut ,
  35. RefClasseEpreuve.Code ,
  36. RefCauseNonPartant.Code CauseNonPartant ,
  37. DECODE(TO_CHAR(RefEngagement.NumeroEquipe), '0', null, TO_CHAR(RefEngagement.NumeroEquipe)) NumeroEquipe, RefEngagement.NomEquipe
  38. FROM ResPerfCSOHunter , RefEpreuve , RefConcours , RefEngagement , RefDetailEngagement ,
  39. RefEngCheval , RefCheval  ,
  40. RefEngCompetiteur , RefCompetiteur , RefLicencie ,
  41. ResPvResultat , RefClasseEpreuve  , RefDiscipline , RefCauseNonPartant
  42. WHERE RefDiscipline.Code = 'SO'
  43. AND RefEpreuve.Concours_Robid = RefConcours.Robid
  44. AND RefConcours.Discipline_Robid = RefDiscipline.Robid
  45. AND ResPvResultat.Epreuve_Robid = RefEpreuve.Robid
  46. AND RefEngagement.Epreuve_robid  = RefEpreuve.robid
  47. AND ResPerfCSOHunter.ENGAGEMENT_ROBID = RefEngagement.Robid
  48. AND RefDetailEngagement.Engagement_Robid = RefEngagement.Robid
  49. AND RefDetailEngagement.Robid = RefEngCheval.DetailEngagement_Robid
  50. AND RefEngCheval.Cheval_Robid = RefCheval.Robid
  51. AND RefDetailEngagement.Robid = RefEngCompetiteur.DetailEngagement_Robid (+)
  52. AND RefEngCompetiteur.Competiteur_Robid = RefCompetiteur.Robid (+)
  53. AND RefCompetiteur.EstUnLicencie_Robid = RefLicencie.Robid (+)
  54. AND ResPerfCSOHunter.CAUSENONPARTANT_ROBID  = RefCauseNonPartant.ROBID (+)
  55. AND RefClasseEpreuve.Robid = RefEpreuve.ClasseEpreuve_Robid
  56. UNION
  57. SELECT ResPvResultat.Robid ResPvResultat_Robid,
  58. RefConcours.NumeroSequence Num_Concours,
  59. RefConcours.Designation ,
  60. RefEpreuve.NomPrix ,
  61. RefEpreuve.NumeroSequence Num_Epreuve,
  62. RefEpreuve.Robid Epreuve_Robid ,
  63. RefDiscipline.Code "Discipline" ,
  64. Refengagement.ORDREPASSAGE num_depart ,
  65. RefCheval.NumeroSire ,
  66. RefCheval.Nom ,
  67. RefLicencie.Nom || ' ' || RefLicencie.Prenom Licencie,
  68. RefLicencie.LicenceDnseFfe ,
  69. ResPerfDressage.Engagement_Robid ,
  70. 'Pourcentage' Champ1 ,
  71. to_char(ResPerfDressage.Pourcentage / 100) Valeur_Champ1 ,
  72. '' Champ2 ,
  73. '' Valeur_Champ2 ,
  74. '' Champ3 ,
  75. '' Valeur_Champ3 ,
  76. '' Champ4 ,
  77.  '' Valeur_Champ4 ,
  78. ResPerfDressage.POINTS ,
  79. (ResPerfDressage.GAINS/100) GAINS,
  80. (ResPerfDressage.PRIME/100) PRIME,
  81. ResPerfDressage.PLACE ,
  82. ResPvResultat.NbEngagements ,
  83. ResPVResultat.NBPARTANT ,
  84. ResPVResultat.NBFORFAITS ,
  85. ResPVResultat.NBNONPARTANT  ,
  86. ResPVResultat.NbPrix ,
  87. ResPVResultat.SommeDistribuee SOMMEDISTRIBUEE,
  88. RefConcours.DateDebut ,
  89. RefClasseEpreuve.Code ,
  90. RefCauseNonPartant.Code CauseNonPartant,
  91. DECODE(TO_CHAR(RefEngagement.NumeroEquipe), '0', null, TO_CHAR(RefEngagement.NumeroEquipe)) NumeroEquipe, RefEngagement.NomEquipe
  92. FROM ResPerfDressage , RefEngCompetiteur ,
  93. RefEngCheval , RefDetailEngagement , RefEngagement , RefEpreuve , ResPvResultat ,
  94. RefCheval  ,
  95. RefLicencie , RefCompetiteur , RefConcours ,
  96. RefClasseEpreuve ,  RefDiscipline , RefCauseNonPartant
  97. WHERE RefDiscipline.Code = 'DR'
  98. AND RefConcours.Discipline_Robid = RefDiscipline.Robid
  99. AND RefEpreuve.Concours_Robid = RefConcours.Robid
  100. AND RefEngagement.Epreuve_robid  = RefEpreuve.robid
  101. AND ResPvResultat.Epreuve_Robid = RefEpreuve.Robid
  102. AND ResPerfDressage.ENGAGEMENT_ROBID = RefEngagement.Robid
  103. AND RefDetailEngagement.Engagement_Robid = RefEngagement.Robid
  104. AND RefDetailEngagement.Robid = RefEngCheval.DetailEngagement_Robid
  105. AND RefEngCheval.Cheval_Robid = RefCheval.Robid
  106. AND RefDetailEngagement.Robid = RefEngCompetiteur.DetailEngagement_Robid (+)
  107. AND RefEngCompetiteur.Competiteur_Robid = RefCompetiteur.Robid (+)
  108. AND RefCompetiteur.EstUnLicencie_Robid = RefLicencie.Robid (+)
  109. AND ResPerfDressage.CAUSENONPARTANT_ROBID = RefCauseNonPartant.ROBID  (+)
  110. AND RefClasseEpreuve.Robid = RefEpreuve.ClasseEpreuve_Robid
  111. UNION
  112. SELECT  ResPvResultat.Robid ResPvResultat_Robid,
  113. RefConcours.NumeroSequence Num_Concours,
  114. RefConcours.Designation ,
  115. RefEpreuve.NomPrix ,
  116. RefEpreuve.NumeroSequence Num_Epreuve,
  117. RefEpreuve.Robid Epreuve_Robid ,
  118. RefDiscipline.Code "Discipline" ,
  119. Refengagement.ORDREPASSAGE num_depart ,
  120. RefCheval.NumeroSire ,
  121. RefCheval.Nom ,
  122. RefLicencie.Nom || ' ' || RefLicencie.Prenom Licencie,
  123. RefLicencie.LicenceDnseFfe ,
  124. ResPerfCCE.Engagement_Robid ,
  125. 'Pts Dressage' Champ1 ,
  126. to_char( ResPerfCCE.POINTSDRESSAGE) Valeur_Champ1,
  127. 'Pts Steeple' Champ2 ,
  128. to_char(ResPerfCCE.POINTSSTEEPLE)  Valeur_Champ2 ,
  129. 'Pts Fond' Champ3 ,
  130. to_char(ResPerfCCE.POINTSFOND) Valeur_Champ3 ,
  131. 'Pts CSO' Champ4 ,
  132. to_char(ResPerfCCE.POINTSCSO)  Valeur_Champ4 ,
  133. ResPerfCCE.POINTS ,
  134. (ResPerfCCE.GAINS/100) GAINS,
  135. (ResPerfCCE.PRIME/100) PRIME,
  136. ResPerfCCE.PLACE ,
  137. ResPvResultat.NbEngagements ,
  138. ResPVResultat.NBPARTANT ,
  139. ResPVResultat.NBFORFAITS ,
  140. ResPVResultat.NBNONPARTANT  ,
  141. ResPVResultat.NbPrix ,
  142. ResPVResultat.SommeDistribuee  SOMMEDISTRIBUEE,
  143. RefConcours.DateDebut ,
  144. RefClasseEpreuve.Code ,
  145. RefCauseNonPartant.Code CauseNonPartant ,
  146. DECODE(TO_CHAR(RefEngagement.NumeroEquipe), '0', null, TO_CHAR(RefEngagement.NumeroEquipe)) NumeroEquipe, RefEngagement.NomEquipe
  147. FROM ResPerfCCE ,
  148. RefEpreuve , RefConcours , RefEngagement , RefDetailEngagement ,
  149. RefEngCheval , RefCheval  ,
  150. RefEngCompetiteur , RefCompetiteur , RefLicencie ,
  151. RefDiscipline , ResPvResultat , RefClasseEpreuve , RefCauseNonPartant
  152. WHERE RefDiscipline.Code = 'CE'
  153. AND RefConcours.Discipline_Robid = RefDiscipline.Robid
  154. AND RefEpreuve.Concours_Robid = RefConcours.Robid
  155. AND RefEngagement.Epreuve_robid  = RefEpreuve.robid
  156. AND ResPvResultat.Epreuve_Robid = RefEpreuve.Robid
  157. AND ResPerfCCE.ENGAGEMENT_ROBID = RefEngagement.Robid
  158. AND RefDetailEngagement.Engagement_Robid = RefEngagement.Robid
  159. AND RefDetailEngagement.Robid = RefEngCheval.DetailEngagement_Robid
  160. AND RefEngCheval.Cheval_Robid = RefCheval.Robid
  161. AND RefDetailEngagement.Robid = RefEngCompetiteur.DetailEngagement_Robid (+)
  162. AND RefEngCompetiteur.Competiteur_Robid = RefCompetiteur.Robid (+)
  163. AND RefCompetiteur.EstUnLicencie_Robid = RefLicencie.Robid (+)
  164. AND ResPerfCCE.CAUSENONPARTANT_ROBID  = RefCauseNonPartant.ROBID (+)
  165. AND RefClasseEpreuve.Robid = RefEpreuve.ClasseEpreuve_Robid
  166. UNION
  167. SELECT ResPvResultat.Robid ResPvResultat_Robid,
  168. RefConcours.NumeroSequence Num_Concours,
  169. RefConcours.Designation ,
  170. RefEpreuve.NomPrix ,
  171. RefEpreuve.NumeroSequence Num_Epreuve,
  172. RefEpreuve.Robid Epreuve_Robid ,
  173. RefDiscipline.Code "Discipline" ,
  174. Refengagement.ORDREPASSAGE num_depart ,
  175. RefCheval.NumeroSire ,
  176. RefCheval.Nom ,
  177. RefLicencie.Nom || ' ' || RefLicencie.Prenom Licencie,
  178. RefLicencie.LicenceDnseFfe ,
  179. ResDetailPerfat.Engagement_Robid ,
  180. 'Pts Dressage' Champ1 ,
  181. to_char( ResDetailPerfat.POINTSDRESSAGE) Valeur_Champ1,
  182. 'Pts Presentation' Champ2 ,
  183. to_char(ResDetailPerfat.PointsPresentation)  Valeur_Champ2 ,
  184. 'Pts Marathon' Champ3 ,
  185. to_char(ResDetailPerfat.PointsMarathon) Valeur_Champ3 ,
  186. 'Pts SO' Champ4 ,
  187. to_char(ResDetailPerfat.POINTSOBSTACLE)  Valeur_Champ4 ,
  188. ResDetailPerfat.POINTS ,
  189. (ResDetailPerfat.GAINSCHEVAL/100) GAINS,
  190. (ResDetailPerfat.PRIME/100) PRIME,
  191. ResDetailPerfat.PLACE ,
  192. ResPvResultat.NbEngagements ,
  193. ResPVResultat.NBPARTANT ,
  194. ResPVResultat.NBFORFAITS ,
  195. ResPVResultat.NBNONPARTANT  ,
  196. ResPVResultat.NbPrix ,
  197. ResPVResultat.SommeDistribuee SOMMEDISTRIBUEE,
  198. RefConcours.DateDebut ,
  199. RefClasseEpreuve.Code ,
  200. RefCauseNonPartant.Code CauseNonPartant ,
  201. DECODE(TO_CHAR(RefEngagement.NumeroEquipe), '0', null, TO_CHAR(RefEngagement.NumeroEquipe)) NumeroEquipe, RefEngagement.NomEquipe
  202. FROM ResDetailPerfat ,ResPerfAttelage,
  203. RefEpreuve , RefConcours , RefEngagement , RefDetailEngagement ,
  204. RefEngCheval , RefCheval  ,
  205. RefEngCompetiteur , RefCompetiteur , RefLicencie ,
  206. ResPvResultat  , RefClasseEpreuve , RefDiscipline ,  RefCauseNonPartant
  207. WHERE ResPvResultat.Epreuve_Robid = RefEpreuve.Robid
  208. AND RefEpreuve.Concours_Robid = RefConcours.Robid
  209. AND RefConcours.Discipline_Robid = RefDiscipline.Robid
  210. AND RefDiscipline.Code = 'AT'
  211. AND ResPerfAttelage.ENGAGEMENT_ROBID     = RefEngagement.Robid
  212. AND ResDetailPerfat.Cheval_Robid      = RefCheval.Robid
  213. AND ResDetailPerfat.PerfAttelage_Robid   = ResPerfAttelage.robid
  214. --AND ResDetailPerfat.ENGAGEMENT_ROBID     = RefEngagement.Robid
  215. AND RefEngagement.Epreuve_robid          = RefEpreuve.robid
  216. AND RefDetailEngagement.Engagement_Robid = RefEngagement.Robid
  217. AND RefDetailEngagement.Robid            = RefEngCheval.DetailEngagement_Robid
  218. AND RefEngCheval.Cheval_Robid            = RefCheval.Robid
  219. AND RefDetailEngagement.Robid            = RefEngCompetiteur.DetailEngagement_Robid (+)
  220. AND RefEngCompetiteur.Competiteur_Robid  = RefCompetiteur.Robid (+)
  221. AND RefCompetiteur.EstUnLicencie_Robid   = RefLicencie.Robid (+)
  222. AND ResDetailPerfat.CAUSENONPARTANT_ROBID  = RefCauseNonPartant.ROBID (+)
  223. AND RefClasseEpreuve.Robid = RefEpreuve.ClasseEpreuve_Robid
  224. UNION
  225. SELECT ResPvResultat.Robid ResPvResultat_Robid,
  226. RefConcours.NumeroSequence Num_Concours,
  227. RefConcours.Designation ,
  228. RefEpreuve.NomPrix ,
  229. RefEpreuve.NumeroSequence Num_Epreuve,
  230. RefEpreuve.Robid Epreuve_Robid ,
  231. RefDiscipline.Code "Discipline" ,
  232. 0 num_depart,
  233. RefCheval.NumeroSire ,
  234. RefCheval.Nom ,
  235. RefLicencie.Nom || ' ' || RefLicencie.Prenom Licencie,
  236. RefLicencie.LicenceDnseFfe ,
  237. 0 ,
  238. '' Champ1 ,
  239. '' Valeur_Champ1,
  240. '' Champ2 ,
  241. ''  Valeur_Champ2 ,
  242. '' Champ3 ,
  243. '' Valeur_Champ3 ,
  244. '' Champ4 ,
  245. '' Valeur_Champ4 ,
  246. 0 ,
  247. (ResPerfInter.GAINS) GAINS,
  248. ((ResPerfInter.PRIMEHN + ResPerfInter.PRIMEDNSE)) PRIME,
  249. ResPerfInter.PLACE ,
  250. ResPvResultat.NbEngagements ,
  251. ResPVResultat.NBPARTANT ,
  252. ResPVResultat.NBFORFAITS ,
  253. ResPVResultat.NBNONPARTANT  ,
  254. ResPVResultat.NbPrix ,
  255. ResPVResultat.SommeDistribuee SOMMEDISTRIBUEE,
  256. RefConcours.DateDebut ,
  257. RefClasseEpreuve.Code ,
  258. NULL CauseNonPartant ,
  259. '' NumeroEquipe, ''
  260. FROM ResPerfInter ,
  261. RefEpreuve , RefConcours ,
  262. RefCheval  ,
  263. RefCompetiteur , RefLicencie ,
  264. ResPvResultat  , RefClasseEpreuve , RefDiscipline
  265. WHERE ResPvResultat.Epreuve_Robid = RefEpreuve.Robid
  266. AND RefEpreuve.Concours_Robid = RefConcours.Robid
  267. AND RefConcours.Discipline_Robid = RefDiscipline.Robid
  268. AND ResperfInter.epreuve_robid      = Refepreuve.robid
  269. AND ResperfInter.cheval_robid      = RefCheval.Robid
  270. AND ResperfInter.Competiteur_Robid       = RefCompetiteur.Robid (+)
  271. AND RefCompetiteur.EstUnLicencie_Robid   = RefLicencie.Robid (+)
  272. AND RefClasseEpreuve.Robid = RefEpreuve.ClasseEpreuve_Robid;


 
Avec des tables qui contiennent plusieurs centaines de milliers d'enregs.
 
Bon, faut juste avoir les bons index, et oracle s'occupe du reste.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°256823
thecoin
Chasseur de chasseur de canard
Posté le 29-11-2002 à 11:10:01  profilanswer
 

:ouch: heun non quand meme pas

n°256886
drasche
Posté le 29-11-2002 à 12:03:05  profilanswer
 

Mara's dad a écrit a écrit :

C'est une vue dans ce genre là ?




[:xp1700]

n°256890
darklord
You're welcome
Posté le 29-11-2002 à 12:08:27  profilanswer
 

:lol:  :lol:  :lol:  :lol:  
 
excellent!  [:t3xla]


---------------
Just because you feel good does not make you right
n°256891
--greg--
Posté le 29-11-2002 à 12:08:57  profilanswer
 

:ouch:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°256965
drasche
Posté le 29-11-2002 à 13:30:25  profilanswer
 

en cherchant un peu on doit en avoir des pareilles ici ;)

n°257165
thecoin
Chasseur de chasseur de canard
Posté le 29-11-2002 à 14:34:03  profilanswer
 

J'ai découpé ma vu en petit bout, puis je les ai recoller et ca marche du tonner  :D  
 
Fait pas trop le malin toi, j'ai une procedure en PL/SQL trop grosse pour être posté sur ce forum  :o  :D

n°257171
drasche
Posté le 29-11-2002 à 14:38:37  profilanswer
 

j'ai pas de procédure stockée, le client aime pas :o
 
pis toute façon les vues c le prob du chef, pas le mien ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE-SQL] Optimisation d'une vue

 

Sujets relatifs
Requête SQL AccessHypersonique SQL
[SQL SERVER] sécurisation des utilisateursFormatage date sous ORACLE et PHP [Resolu avec TO_CHAR]
[Oracle] Probleme avec les packagesPL/SQL Recuperer le "champ" jour d'une date
[java] IntelliJ Idea 3.0 et import optimisationRecherche Doc sur MDX avec SQL Server
[SQL SERVER] sauvegarde[SQL SERVER]pb de caractères
Plus de sujets relatifs à : [ORACLE-SQL] Optimisation d'une vue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR