У меня проблема с разбиением на страницы двух больших таблиц:
Receipts table: id, receipt_date, record_details (650k records)
Z Reports table: id, receipt_date, record_details (88k records)
Что я хочу сделать, так это отсортировать обе эти таблицы по receipt_date
и объединению, после чего я хочу разбить их на страницы. В настоящее время у меня есть этот SQL (не совсем так, но основная идея такова):
SELECT c.id, c.receipt_date, c.col_type FROM (
SELECT a.id, a.receipt_date, 'receipt' AS coltype
FROM `terminal_receipts` a
WHERE `a`.`deleted` IS NULL
UNION ALL
SELECT b.id, b.receipt_date, 'zreport' AS coltype
FROM z_reports` b WHERE `b`.`deleted` IS NULL
) c
ORDER BY receipt_date desc LIMIT 50 OFFSET 0
Таким образом, сервер выбирает все записи из двух таблиц, упорядочивает их по дате, а затем применяет нумерацию страниц.
Но когда количество строк увеличивается, этот запрос будет выполняться дольше. Есть ли другой алгоритм для получения того же результата, не зависящий от размера таблицы?
z1 r1 r2 r3 z2 r4 r5 r6 r7 r8 z3
и т. д., и мне понадобятся два маркера. 22.04.2019