You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何SQL Server执行该查询耗时远超MS Access?

性能差异问题:MS Access vs SQL Server 查询远程GSS表

查询逻辑完全一致,均从同一张远程表V_JOB_HEADER提取数据,该表属于Global Shop Solutions(GSS)ERP系统。两者唯一区别:

  • MS Access中将V_JOB_HEADER配置为链接表
  • SQL Server中通过OPENQUERY语句查询该远程表

执行耗时差距极大:

  • MS Access执行仅需2秒
  • SQL Server执行需要2分钟

原本怀疑是Access缓存了远程表结果导致,但关闭并重新打开Access数据库后,查询速度依然很快,说明并非临时缓存,可能存在某种“永久”缓存机制。


SQL Server 查询代码

if object_id('tempdb..#VJOBHEADER') is not null drop table #VJOBHEADER

--#VJOBHEADER 
select 

    *

into #VJOBHEADER

from

    openquery(GSS, 'select * from V_JOB_HEADER') t --1 min 27 seconds; 
    
select

    p.*

from

    [Production Order] p with(nolock)
    left join #VJOBHEADER v on p.JOB = v.JOB and p.SUFFIX = v.SUFFIX

where

    v.JOB is null
    and p.Status not in ('CLOSED','COMPLETE','STOCKED')
    and left(p.Status, 7) <> 'SHIPPED'
    and left(p.[PrO Number], 1) not in ('A','B')

if object_id('tempdb..#VJOBHEADER') is not null drop table #VJOBHEADER

Access中链接表的连接字符串

ODBC;DSN=GLOBAL_APT;ServerName=SERVERNAME.1583;UID=COMPANYNAME;ArrayFetchOn=1;ArrayBufferSize=8;TransportHint=TCP;DBQ=GLOBALAPT ;OpenMode=0;ClientVersion=14.21.010.000;CodePageConvert=1252;PvClientEncoding=CP1252;PvServerEncoding=CP1252;AutoDoub;TABLE=V_JO

(注:Access的连接字符串中截断了链接表的完整名称)


内容的提问来源于stack exchange,提问作者TheMortiestMorty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:55:07