Эффективное SQL объединение таблиц и разбиение на страницы - PullRequest
1 голос
/ 17 января 2020

У меня есть 5 различных таблиц, а именно:

  • депозиты
  • выплаты
  • платежи
  • переводы
  • обмен

Мне нужно объединить эти таблицы и вернуть клиентам разбитый на страницы результат из API Nodejs. Я не знаю, как сделать это эффективно, учитывая, что таблицы действительно большие (> 100 тыс. Строк каждая).

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

  1. Поток отдельных результатов запроса из каждой таблицы в node js бэкэнд и реализует некоторые логики слияния c там.

ИЛИ

Каким-то образом выполнить объединение на уровне БД, создав какую-то виртуальную таблицу или какое-либо постоянное представление, и выполнить запрос по этому вопросу.

Что вы, ребята, думаете?

Спасибо за ваше время!

Ответы [ 2 ]

0 голосов
/ 27 января 2020

трудно найти решение, не зная структуры таблиц. Вы можете использовать представление, созданное с помощью INNER JOIN, и использовать это представление для выбора атрибутов для возврата данных в запросы API. Или вы можете напрямую использовать INNER JOIN для возврата данных. Возврат данных с использованием процедуры.

0 голосов
/ 20 января 2020

Если вы планируете манипулировать данными БД, то, с моей точки зрения, наиболее эффективный способ сделать это - на уровне БД, составить конкретное представление c SQL или подготовить расширенные методы объединения запросов с использованием JOIN , UNION или Подзапросы . Сказав выше, и предположив, Node.js Потоковое концепция , это всегда хорошая практика, принимая потоковое для больших наборов данных.

const request = new sql.Request()
request.stream = true // You can set streaming differently for each request
request.query('select * from verylargetable')

Если вы ожидаете дальнейшего использования этих данных для некоторых других клиентских приложений, вы можете рассмотреть возможность использования CSV stringifier Node.js package, конвертируя SQL выходные данные в текстовый формат CSV.

...