Я пытаюсь использовать библиотеку libpqxx для чтения и записи в базу данных postgreSQL через C ++. Пример базы данных, который у меня есть, состоит из 3 столбцов и около 16000 строк.
В моем коде я использую work.exe c для передачи sql запроса, и потребовалось 30 + se c для обновления всех 16000 ячеек в 1 столбце. Я не уверен, правильно ли я это делал, или время записи зависит от скорости моего жесткого диска?
Прикрепленный образец кода, который я использовал.
#include <string>
#include <vector>
#include <chrono>
#include <iostream>
#include <fstream>
#include <sstream>
#include <pqxx/pqxx>
using namespace std;
using namespace std::chrono;
auto start = high_resolution_clock::now();
int main(int argc, char* argv[])
{
//open connection to postgresql database
pqxx::connection con("host=localhost port=5432 dbname=postgres user=postgres password=P@$$w0rd");
//"pqxx::work" is an transaction type object in libpqxx, use to transfer SQL query or command
pqxx::work wrk(con);
//"pqxx:result" set containing data returned by a query or command
pqxx::result res = wrk.exec("SELECT * FROM signal");
for (int i = 0; i < res.size(); i++)
{
wrk.exec("UPDATE public.signal SET signalvalue = signalvalue + 1 WHERE indexid ="+to_string(i)+";");
}
wrk.commit();
auto stop = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(stop - start);
cout << "Time taken by function: " << duration.count() << " microseconds" << endl;
cin.get();
return 0;
}