c++ - navicat之类的数据库管理软件如何从表中选取大量数据

标签 c++ linux database navicat

我正在Linux平台上编写一个C++程序。这个程序类似于linux-mini-navicat,它可以连接到不同的数据库(postgresql,mysql,mssql,oracle)并执行sql。并且该程序启动一个接口(interface)服务器(thrift)用于客户端连接并执行sql命令。

当我执行“select * from table”时,其中有大量数据,可能是一百万或一千万或更多,我的程序在将数据返回给客户端之前被linux终止,因为内存不足。

我很好奇 navicat 如何实现这一目标,以及如何在我的程序中实现这一目标?

希望我能清楚地表达我的问题。

最佳答案

通常不需要一次性从大表中检索(并保存在内存中)所有数据。如果您正在显示查询结果,您可以获取足够的数据来填充屏幕上的表格,然后在用户滚动表格时下载它。如果您开发一些分析算法,您仍然可以分块分析表数据。请参阅有关数据库引擎的可滚动游标的文档。

关于c++ - navicat之类的数据库管理软件如何从表中选取大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40712316/

相关文章:

sql - 如何更改 derby 数据库的列数据类型?

c++ - rdbuf()->str() 在哪里?

linux - 如果一个文件已经被删除,但是一个进程仍然持有一个文件句柄,另一个进程可以访问它吗?

c - 在函数中调用 fork() 后主进程不打印

Linux(Ubuntu)平均负载高于总真实利用率?

c# - 使用 C# 使用数据库中的新数据每 1 分钟更新一次 Google Maps Javascript 对象?

安卓房间数据库被锁定

c++ - Qt QPainter在paintEvent中消除用paintGL绘制的图形

c++ - 为什么 Visual Studio 会在这里调用析构函数,而 GCC 不会?

c++ - 完整对象还是子对象?