最近,做了一下关于SQL Sever连接采用不同连接效率测试
连接程序:
HRESULT CADO::OpenDataBase(CString strConnectionStr)
{
CoInitializeEx( NULL, COINIT_MULTITHREADED );
HRESULT hr = E_FAIL;
try
{
if(NULL == m_pConnPtr )
{
hr = m_pConnPtr.CreateInstance(__uuidof(Connection));
if (FAILED(hr)) //创建失败
return hr;
}
//连接状态
if(m_pConnPtr->State)
{
m_pConnPtr->Close ();
}
hr = S_FALSE;
//打开数据库
hr = m_pConnPtr->Open(_bstr_t(strConnectionStr),
_T(""),_T(""),
adConnectUnspecified);
if (hr == S_OK)
{
m_pCommandPtr.CreateInstance(__uuidof(Command));
m_pCommandPtr->ActiveConnection = m_pConnPtr;
}
}catch(...){
hr = S_FALSE;
}
return hr;
}
采用相同的查询方式
---------------------------
启动<<查 询>>服务
---------------------------
1. 查询记录
Select
ZhLGD.Name,Route.Name,[1ZhChD].Name,Wafer.Name,PQS.Name,[10010].[ID_Oper],[10010].[DT_Oper],[10010].[ID_MoveOut],[10010].[DT_MoveOut]
From
ZhLGD,[10010],Route,[1ZhChD],Wafer,PQS
Where
[10010].[ID_ZhLGD] = ZhLGD.[ID_ZhLGD]
and [10010].[ID_Route] = Route.[ID_Route]
and [10010].[ID_ZhChD] = [1ZhChD].[ID_ZhChD]
and [10010].[ID_Wafer] = Wafer.[ID_Wafer]
and [10010].[ID_PQS] = PQS.[ID_PQS]
ORDER BY [1ZhChD].Name ASC ,[Wafer].Name ASC
连接方式1:
CString strConnectionStr;
strConnectionStr.Format(_T("driver={SQL Server};Server=%s,1433;DATABASE=%s;UID=%s;PWD=%s")
,g_strIP
,g_strDB
,g_strName
,g_strPWD
);
结果:
---->> 耗时:9.406s
共筛选出:5584 条记录
连接方式2:
// 具有比较高的效率
strConnectionStr.Format(_T("Provider=SQLOLEDB;Server=%s;Database=%s; uid=%s; pwd=%s;")
,g_strIP
,g_strDB
,g_strName
,g_strPWD
);
---->> 耗时:1.141s
共筛选出:5584 条记录
显而易见,不同的连接方式,对查询效率影响是非常大的。采用
SQLOLEDB 方式连接是非常高效的。
