Bonjour à tous,

j'ai une requete SQL sous Mysql sur une grosse table de prés de 10 millions de lignes. ma requete est constituée de 3 union, entre des requetes du type:

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
18
19
20
21
22
23
24
25
26
(SELECT distinct
    DATE_FORMAT(CP.Dateofanalysis,'%M %Y') AS Period,
    IF(CAST(DATE_FORMAT(CP.Dateofanalysis,'%m') AS CHAR)>3,CONCAT(CAST(DATE_FORMAT(CP.Dateofanalysis,'%Y') AS CHAR),'-',CAST(DATE_FORMAT(CP.Dateofanalysis,'%Y') AS CHAR)+1),CONCAT(CAST(DATE_FORMAT(CP.Dateofanalysis,'%Y') AS CHAR)-1,'-',CAST(DATE_FORMAT(CP.Dateofanalysis,'%Y') AS CHAR))) AS FiscalYearInternal,
    CP.Facility,
    CP.Traded_Manufactured,
    0 AS Horizon,
     CP.OrderedLastMonths AS NbLines,
    CP.OrderToDelivery AS PlanningTimeFence,
    CP.Company,
    CP.Division,
    CP.FTActivityCode,
    CP.FTActivityName,
    CP.Warehouse,
    CP.WarehouseName,
    CP.Item,
    CP.ItemDescription,
    CP.AchievementGroup,
    CP.AchievementFacility
 
 
FROM
    Big_table
WHERE CP.Traded_Manufactured IS NOT NULL
AND CP.OrderedLastMonths=1
AND CP.DayInMonth =1
)
Cette requete prend beaucoup de temps à s'executer (surtout qu'il y'a une union de 4 requêtes similaires, il n'y a que les conditions de IF qui changent, les champs extraits sont les memes).

Pouvez-vous m'aider à optimiser cette requête ?

Je vous remercie d'avance

macsigarev