J'ai une requête comme ceciRequête sans clause where - optimisation des performances - mysql
L'exécution prend 40 minutes. Je ne peux pas ajouter d'autres clauses where j'ai besoin de toutes les données
La configuration des tables est la suivante et ci-dessous est un instantané du plan d'explication.
Je sais que c'est une requête déraisonnable car il accède à toutes les données. Mais, est-il possible d'améliorer les horaires?
select
pl.CompanyId,
pl.FarmerCropId,
ai.ActivityId,
ai.ActivityName,
ai.ActivityPlanId,
ai.ActivityPlanName,
ai.ActivityScheduleId,
ai.DAS,
(case when fca.CompletionDate = '1900-01-01' then null else fca.CompletionDate end)CompletionDate,
fca.IsClosed,
fca.LastModifiedDate,
ai.AttributeDataTypeId,
ai.AttributeId,
ai.AttributeName,
fcaa.FarmerCropActivityAttributeId,
fcaa.Reading,
ai.DataTypeId,
ai.DataTypeName,
ai.SequenaceNo,
fca.isactive,
pl.partitionflag,
fca.ExpectedStartDate,
fca.ExpectedClosureDate,
ai.ActivityMasterIsActive,
ai.ActivityPlanIsActive,
ai.ActivityScheduleIsActive,
ai.AttributeDataTypeIsActive,
ai.AttributeMasterIsActive,
case when isclosed = '1' then 'Closed On Time'
when isclosed = '2' then 'In Progress'
when isclosed = '3' then 'Pending'
when isclosed ='5' then 'Late Closed'
when isclosed ='4' then 'Not Started'
end as ClosureStatus ,
fca.FarmerCropActivityID
from
activityinformation ai
join FarmerCropActivity fca
on ai.activityscheduleid = fca.activityscheduleid
and fca.isactive = 1
left join FarmerCropActivityAttributes fcaa
on fcaa.farmercropactivityid = fca.farmercropactivityid
and fcaa.AttributeDataTypeID = ai.AttributeDataTypeID
join plot pl on
pl.farmercropid = fca.farmercropid
where pl.partitionflag = 1;
activityinformation
lignes 1.Total - 137653
2.Indexes -
idx_activityinformation_combinedids(ActivityMasterIsActive, ActivityPlanIsActive , ActivityScheduleIsActive,AttributeDataTypeIsActive
,AttributeMasterIsActive)
3.Columns -
source
ActivityId
ActivityName
ActivityPlanId
ActivityPlanName
CropTypeId
ActivityScheduleId
ActivityintervalDays
AttributeDataTypeId
SequenaceNo
AttributeId
AttributeName
DAS
DataTypeID
DataTypeName
talendate
companyid
ActivityMasterIsActive
ActivityPlanIsActive
ActivityScheduleIsActive
AttributeDataTypeIsActive
AttributeMasterIsActive
Min
Max
farmercropactivity
lignes 1.Total - 2721502
Index -
idx_fca_activityscheduleid(activityscheduleid),
idx_fca_activityid(ActivityID),
idx_fca_farmercropid(FarmerCropId),
idx_fca_composite(ActivityScheduleID , IsActive , ActivityID , FarmerCropId , FarmerCropActivityID),
idx_fca_composite1(ActivityScheduleID , IsActive , FarmerCropId , FarmerCropActivityID , ActivityID , CompletionDate , IsClosed ,
LastModifiedDate , ExpectedStartDate , ExpectedClosureDate)
3.Columns -
FarmerCropActivityID
FarmerCropId
ActivityScheduleID
CompletionDate
ExpectedStartDate
ExpectedClosureDate
Suggestions
Comments
IsClosed
IsActive
LastModifiedDate
LastModifiedBy
ActivityID
ActivityReading
IsMandatory
ActivityCategoryID
ClientId
farmercropactivityattributes
lignes 1.Total - 4993953
Index -
idx_fcaa_farmercropactivityid (FarmerCropActivityID), idx_fcaa_AttributeDataTypeID (AttributeDataTypeID)
Columns -
FarmerCropActivityAttributeID FarmerCropActivityID AttributeDataTypeID Lecture ID client
plot
lignes 1.Total - où partitionflag = 1 --- 328838
2.indexes -
idx_composite2(companyid , partitionflag , FarmerCropId)
3.Colonnes -
source
companyid
Company
FarmerId
FarmerCode
FarmerName
LandId
PlotName
Latitude
Longitude
FarmerCropId
Village
DistrictId
CropId
crop
VarietyId
Variety
SowingDate
SowingWeek
SowingWeekRange
SowingMonth
SowingMonthName
SowingYear
DeclaredArea
AuditedArea
SowingArea
IsAudited
IsGeoTagged
ExpectedHarvestPerAcre
FirstExpectedHarvestDate
FirstActualHarvestDate
HarvestArrivalStatus
PlannedQuantity
ExpectedQuantity
CurrentQuantity
HarvestQuantity
RegistrationDate
RegistrationWeek
RegistrationWeekRange
RegistrationMonth
RegistrationMonthName
RegistrationYear
ActivityPlanId
ActivityPlanName
HarvestPlanId
HarvestPlanName
LastModifiedDate
Address
Territory
Taluka
ReestimateDate
NewHarvestDate
NewHarvestQuantity
ReestimateReasonCode
ReestimateReason
Comments
FarmerCropHarvestreestimateId
IsReestimated
ReestimateDaysShift
CurrentQuantityWithoutReestimate
HarvestUnitId
harvestunit
ExtendedHarvestUnitId
ExtendedHarvestUnit
ConversionFactor
MobileNumber
Coordinates
PreferredSKUTypeId
PreferredSKUName
Capacity
Soiltypeid
soildesc
Irrigationtypeid
irrigationtypedesc
lastmodifiedon
partitionflag
areaunitid
areaunitname
archivedate
talendate
geoid
idtoroot
nametoroot
RevisedFirstExpectedHarvestDate
HarvestStatusId
HarvestStatus
Merci Rathi
Vous pouvez envoyer moins de données. C'est à peu près ça. Vous envoyez ~ 136k lignes. Cela prend du temps pour l'envoyer, et de l'autre côté pour l'accepter/l'analyser. Ce que vous demandez est d'optimiser la partie où vous * trouvez * ces 136k - mais ce n'est que 1/3 de vos problèmes de performance et comme vous pouvez le voir - la partie de trouver des lignes à rejoindre est assez rapide. – Mjh
Quelle est votre requête? –
Toutes mes excuses !! avait manqué la requête, l'ai inclus maintenant dans la question principale –