寻找两个 tables/queries 之间的双左连接的改进
Looking for improvement on double left join between two tables/queries
我有一个使用双连接、两个左连接的查询,从 table 到一个查询。它工作正常,但最近我注意到一些滞后,因为更多记录被添加到基础 tables。我担心的是延迟,想知道是否有更好的方法来解决这个问题。
我也对嵌套查询做了一些研究,但我的尝试并没有给我想要的 output/results。
SELECT
BulkStockV1.TyreIndividualID,
BulkStockV1.TyrePatternID,
BulkStockV1.TyreStatusID,
qSelStockFitmentNew.JobCardDate,
qSelStockFitmentNew.JobCardNumber,
qSelStockFitmentNew.Horse_ID,
qSelStockFitmentNew.Trailer_ID,
qSelStockFitmentNew.WheelPos,
BulkStockV1.BulkOrderID,
FROM BulkStockV1
LEFT JOIN qSelStockFitmentNew
**ON (BulkStockV1.TyrePatternID = qSelStockFitmentNew.Pattern_ID)
AND (BulkStockV1.TyreIndividualID = qSelStockFitmentNew.TyreIndividual_ID)**
ORDER BY
qSelStockFitmentNew.JobCardDate,
qSelStockFitmentNew.JobCardNumber,
qSelStockFitmentNew.Horse_ID,
qSelStockFitmentNew.Trailer_ID,
qSelStockFitmentNew.WheelPos,
BulkStockV1.TyreIndividualID;
我试过删除第二个连接,它加快了查询速度,但 results/output 也发生了变化。
对于此查询:
SELECT . . .
FROM BulkStockV1 bs LEFT JOIN
qSelStockFitmentNew sfn
ON bs.TyrePatternID = sfn.Pattern_ID AND
bs.TyreIndividualID = sfn.TyreIndividual_ID
ORDER BY . . .
首先,BulkStockV1
大概是一个观点。至少,这就是我对 V1
的解释。如果是这样,那么这可能是您的性能问题的原因。
对于此查询,您需要 qSelStockFitmentNew(Pattern_ID, TyreIndividual_ID)
上的单个复合索引。因为这是一个 LEFT JOIN
,索引在第二个 table.
上更好
你有一个ORDER BY
。 las,它混合了来自两个 table 的列,因此您无法使用索引消除排序。
我有一个使用双连接、两个左连接的查询,从 table 到一个查询。它工作正常,但最近我注意到一些滞后,因为更多记录被添加到基础 tables。我担心的是延迟,想知道是否有更好的方法来解决这个问题。
我也对嵌套查询做了一些研究,但我的尝试并没有给我想要的 output/results。
SELECT
BulkStockV1.TyreIndividualID,
BulkStockV1.TyrePatternID,
BulkStockV1.TyreStatusID,
qSelStockFitmentNew.JobCardDate,
qSelStockFitmentNew.JobCardNumber,
qSelStockFitmentNew.Horse_ID,
qSelStockFitmentNew.Trailer_ID,
qSelStockFitmentNew.WheelPos,
BulkStockV1.BulkOrderID,
FROM BulkStockV1
LEFT JOIN qSelStockFitmentNew
**ON (BulkStockV1.TyrePatternID = qSelStockFitmentNew.Pattern_ID)
AND (BulkStockV1.TyreIndividualID = qSelStockFitmentNew.TyreIndividual_ID)**
ORDER BY
qSelStockFitmentNew.JobCardDate,
qSelStockFitmentNew.JobCardNumber,
qSelStockFitmentNew.Horse_ID,
qSelStockFitmentNew.Trailer_ID,
qSelStockFitmentNew.WheelPos,
BulkStockV1.TyreIndividualID;
我试过删除第二个连接,它加快了查询速度,但 results/output 也发生了变化。
对于此查询:
SELECT . . .
FROM BulkStockV1 bs LEFT JOIN
qSelStockFitmentNew sfn
ON bs.TyrePatternID = sfn.Pattern_ID AND
bs.TyreIndividualID = sfn.TyreIndividual_ID
ORDER BY . . .
首先,BulkStockV1
大概是一个观点。至少,这就是我对 V1
的解释。如果是这样,那么这可能是您的性能问题的原因。
对于此查询,您需要 qSelStockFitmentNew(Pattern_ID, TyreIndividual_ID)
上的单个复合索引。因为这是一个 LEFT JOIN
,索引在第二个 table.
你有一个ORDER BY
。 las,它混合了来自两个 table 的列,因此您无法使用索引消除排序。