在C ++中运行SQL Server上的选择查询的最快方法是什么?

时间:2011-09-02 18:37:42

标签: c++ sql-server-2008

我正在为Windows Server 2008编写一个C ++应用程序,我需要一个驱动程序/库来连接到SQL Server 2008以运行选择查询。该应用程序与SQL Server位于同一台计算机上。我应该使用哪种驱动程序?

修改

如果我要让应用程序在另一台计算机上运行(例如,在与运行SQL Server的计算机相同的VLAN上),我应该使用哪个驱动程序?

3 个答案:

答案 0 :(得分:1)

最大的性能影响将是数据库和应用程序。如果数据库缺乏内存,磁盘IO或CPU或查询写得不好或表设计不好,那么应用程序编写的语言并不重要。我看过非常复杂的写入应用程序当数据库被编写/表现良好时,只是压缩效率低下。一旦数据库出现打嗝,请注意!对于应用程序的最终用户来说,即使是3秒钟的查询也是如此。

答案 1 :(得分:1)

如果您问的是哪种SQL Server访问方法在C ++中实现最快,我会说 - ADO通过本机COM。你这样做:

#import "libid:{EF53050B-882E-4776-B643-EDA472E8E3F2}" rename("EOF", "ADOEOF")

//...
ADODB::_ConnectionPtr MyConn;
MyConn.CreateInstance(__uuidof(ADODB::Connection));
//Connect to the database
MyConn->Open(L"Provider=SQLOLEDB;Server=myserver;Database=mydb;Trusted_Connection=Yes", 0, 0, 0);

//Run a query
ADODB::_RecordsetPtr MyRecset(MyConn->Execute(L"select * from t", &_variant_t(), adCmdText));

答案 2 :(得分:1)

好吧,我会用自己的答案填写。

我同意这一点大多没有实际意义,因为数据库性能将淹没库方面的任何性能差异。此外,如果您通过TCP / IP运行数据库服务器,则网络传输速度/延迟将主导图表。

当然,进一步处理可能会以通常的方式受益于以高性能语言编写。

那就是说,ADO将是最具特色的。

但是如果你真的想要原始速度,例如只有将中等到大的blob流式传输到表格中,您才能找到直接进入TDS protocol的最佳性能。

TDS++ library 将是一个很好的起点。

更多信息: