Вернуть набор результатов SQL в виде большого двоичного объекта через ODBC

0

используя ODBC, поскольку транспортный уровень удобен тем, что вы легко подключаетесь через tcp к удаленной машине. Недостатком является все круглые поездки по соединению. При запуске толстого клиента требуется множество наборов данных с тысячами строк. Это данные, необходимые, прежде чем вещь № 1 может быть выполнена пользователем.

То, что я хотел бы сделать, это создать единый объект (возможно, blob) для возврата с единичным округлением, означающим уплотнение набора результатов в таблице /blob/object, который я могу разобрать при получении.

Я могу придумать несколько уродливых способов сделать это, что-то элегантное было бы здорово.

  • 0
    Я думаю, что все зависит от того, как вы кодируете свою программу на C ++. Если вы используете что-то вроде CRecordSet, тогда да, будут тысячи поездок туда и обратно. Однако, если вы знаете, что вам нужно (например, выберите col1 из таблицы 1), вы можете использовать для этого минимальный набор API-интерфейсов ODBC, и библиотека не будет делать ненужных вызовов.
  • 0
    Используя ODBC на любом языке, за вызовом Execute () следуют несколько вызовов Fetch (в цикле), по одному вызову для каждой строки. Речь идет об упаковке данных, чтобы этого избежать.
Показать ещё 1 комментарий
Теги:
sql-server-2012
odbc

1 ответ

0

Предполагая, что вы имеете в виду SQL Server. если вы используете курсоры forwardonly, каждый SQLFetch не требует двусторонней поездки на сервер. Если вы найдете много времени для этого, возможно, стоит рассмотреть, как вы вызываете API ODBC. Обычно выборка из прямого только курсора будет ограничена пропускной способностью вашей сети, и единственными необходимыми для этого раундами будут TCP ack.

  • 0
    Ну, я могу использовать SQLFetchScroll () для извлечения многих строк, но мне было интересно узнать об упаковке, возможно, с некоторым сжатием с использованием некоторой хитрости на стороне сервера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню