В поисках улучшения в двойном левом соединении между двумя таблицами / запросами - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть запрос, который использует двойное соединение, два левых соединения из таблицы в запрос.Это отлично работает, но недавно я заметил некоторое отставание, так как в базовые таблицы добавляется больше записей.Меня беспокоит отставание, и мне было интересно, можно ли найти лучший способ приблизиться к этому.

Я также провел некоторое исследование по вложенным запросам, но мои попытки не дали мне желаемого результата / результатов.

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;

Я пытался удалить второе объединение, и это ускоряет запрос, но также меняются и результаты / вывод.

1 Ответ

0 голосов
/ 29 апреля 2019

Для этого запроса:

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, индексы лучше для второй таблицы.

У вас есть ORDER BY. Увы, он смешивает столбцы из обеих таблиц, поэтому нет никакой возможности устранить сортировку с помощью индекса.

...