Как я могу эффективно отследить последнее местоположение груза, используя последнюю дату отчетности? - PullRequest
0 голосов
/ 06 апреля 2010

Мне нужно найти последнее местоположение каждой позиции груза в партии. Мы в основном делаем это, просматривая маршрут, выбранный для груза, а затем определяя самое позднее (максимальное) время вступил против узлов этого маршрута. Например, если у маршрута есть 5 узлов, и мы ввели временные параметры для первых 3 узлов, то самое позднее время (максимальное время) сообщит нам о его местонахождении среди 3 узлов. Я действительно застрял в этом вопросе относительно проблем с производительностью. Даже на нескольких сотнях рядов это занимает более 2 минут. Пожалуйста, предложите, как я могу улучшить этот запрос или какой-либо альтернативный подход, который я должен приобрести?

Примечание: ATA = фактическое время прибытия и ATD = фактическое время вылета

SELECT DISTINCT 
       c.id   as cid
     , c.ref  as cons_ref 
     , c.Name
     , c.CustRef  
  FROM consignments c  
 INNER JOIN routes r        ON c.Route = r.ID   
 INNER JOIN routes_nodes rn ON rn.Route = r.ID   
 INNER JOIN cargo_timing ct ON c.ID=ct.ConsignmentID   
 INNER JOIN ( SELECT t.ConsignmentID, Max(t.firstata) as MaxDate 
                FROM cargo_timing t 
               GROUP BY t.ConsignmentID 
            ) as TMax   
         ON (    TMax.MaxDate=ct.firstata 
             AND TMax.ConsignmentID=c.ID  
            )
INNER JOIN nodes an         ON ct.routenodeid = an.ID    
INNER JOIN contract cor     ON cor.ID = c.Contract   
WHERE c.Type = 'Road' 
  AND ( c.ATD = 0 AND c.ATA != 0 )   
  AND (cor.contract_reference in  ('Generic','BP001','020-543-912'))   
ORDER BY c.ref ASC    

1 Ответ

1 голос
/ 06 апреля 2010

Можете ли вы назначить каждому узлу свой идентификатор и добавить этот идентификатор в таблицу consignments в качестве внешнего ключа? Это позволит вам установить «текущий» узел, когда груз проходит через узел. Разница во времени между текущим и последним обновлением поля «текущий узел» в таблице consignments даст вам представление о том, как груз попал по маршруту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...