Я бы попробовал использовать (коррелированные) подзапросы.
SELECT t11.orderref,
t11.product,
t11.orderdate,
t11.client,
(SELECT max(t13.shipmentdate)
FROM table1 t13
WHERE t13.orderref = t11.orderref) max_date
FROM table1 t11
WHERE t11.orderref = (SELECT t12.orderref
FROM table1 t12
WHERE t12.client = 'Georges');
Для поддержки подзапроса, получая orderref
индекс как
CREATE INDEX table1_c_or
ON table1 (client ASC,
orderref ASC);
должно помочь. Этот подзапрос в любом случае "заостренный".
Для получения максимума shipmentdate
CREATE INDEX table1_or_sd
ON table1 (orderref ASC,
shipmentdate DESC);
должно помочь. Оптимизатор должен заметить, что максимум должен быть получен только один раз, так как orderref
всегда одинаков. Этот индекс также можно использовать для поддержки внешнего запроса, поскольку orderref
является его первым ключом.
При желании можно создать дополнительный индекс, например
CREATE INDEX table1_or_p_od_c
ON table1 (orderref ASC,
product ASC,
orderdate ASC,
client ASC);
может даже лучше поддерживать внешний запрос. Но это не обязательно, я думаю.