У меня очень большая таблица транзакций в DB2 v11, и мне нужно запросить ее часть как можно более эффективно. Все, что мне нужно, - это общее количество набора (заранее неизвестное, оно основано на критериях, скажем, за 1 день) и идентификатор первой записи и идентификатор последней записи. Старый код извлекал всю таблицу, затем просто использовал идентификатор 1-й записи, идентификатор и размер последней записи и не использовал остальные. Теперь этот код истекает. Это сложный запрос нескольких соединений. Есть ли способ просто получить размер набора, 1-й записи, последней записи - все в одном запросе выбора? Я читал, что переупорядочение списка для извлечения 1-й записи (так что извлекайте с помощью Des c, затем изменяйте на As c) неэффективно.
пример таблицы 1 TRANSACTION_RECORDS:
tdID TIMESTAMP name
-------------------------------
123 2020-03-31 john
234 2020-03-31 dan
456 2020-03-01 Eve
675 2020-04-01 joy
пример таблицы 2 TRANSACTION_TYPE:
invoiceId tdID account
------------------------------
897 123 abc
898 123 def
877 234 mnc
899 456 opp
Пример запроса
select Min(tr.transaction_id), Max(tr.transaction_id)
from TRANSACTION_RECORDS TR
join TRANSACTION_TYPE TT
on TR.tdID=tt.tdID
WHERE Date(TR.TIMESTAMP) = '2020-03-31'
group by tr.tdID
order by TR.tdID ASC
Это приводит к нескольким столбцам , (но для этого нужна группа)
123,123
234,234
456,456
Что я хочу, это:
123,456