关于openquery使用的一些了解
用到sql链接服务器额一定对openquery不陌生,,在openquery中不能用变量参数来进行动态查询,,但是仍然可以 将where条件置于openquery体外进行判断例如
select * from openquery(
[连接服务器],'sql语句'
)
where .....
一开始使用没有明白其使用方法只是生搬硬套,直到遇见数据量很大的时候才发现硬套不行了,需要研究一下;
其实在这个openquery中相当于一个子查询的结果集,外边的一层使根据里面子查询 查到的内容进行二次筛选,,也就是相当于
select * from (select * from tables) as a ,这种格式,速度快慢取绝于你在子查询中查到可用记录的条数(也就是在满足条件的前提下,子查询数据量越小越好),
举个例子,如果你在有一亿条数据的记录中用链接服务器做增量插入到另外一个数据库中的话,这里就必须要设置一个合理的时间条件范围,不能把所有的where条件都放在最外层的查询当中,否则就完蛋了,
这时我们可以在子查询中先规定一个时间范围,时间可用CONVERT 函数来进行动态条件查询将范围进一步动态缩小(这里就可以做成无人值守的作业了)
总而言之 不能把所有的条件都放置到外层的查询中 ,子查询 记录数量在够用的情况下一定要少!
内层子查询最好将每个嵌套查询都用 as 关键字给其列命名,才能在外层查询中使用
INSERT INTO u_sale_c (saleno,rowid,busno,accdate,wareid,makeno,wareqty,lsj,lsze,netprice,sshje,chbje,saler,member,acctime,yhje,integralvalue) SELECT * FROM openquery ([192.9.200.108], ' SELECT scd , rcdidx , dptid , substring (trddtm, 1, 8) as trddtm , gdsid , bthno , qty , rtlprc , rtlprc * qty , round (sttamt / qty, 4) , sttamt , (SELECT round (AVG (amt * (1 + taxrto)), 4) FROM scst WHERE srcbllno = salrcd.scd AND gdsid = salrcd.gdsid AND savdptid = salrcd.dptid ) as price , (SELECT gdr FROM gdrdtl WHERE scd = salrcd.scd AND rcdidx = salrcd.rcdidx) as gdr , (SELECT mbrid FROM trdrcd WHERE scd = salrcd.scd ) as mbrid , convert (DATETIME, substring (trddtm, 1, 4) + ''-'' + substring (trddtm, 5, 2) + ''-'' + substring (trddtm, 7, 2) + '' '' + substring (trddtm, 9, 2) + '':'' + substring (trddtm, 11, 2) + '':'' + substring (trddtm, 13, 2)) as trddtmtime , round ((rtlprc * qty - sttamt), 2) as yhje , points FROM [yyshop].[dbo].[salrcd] salrcd where trddtm>= CONVERT (VARCHAR (8), DATEADD (dd, -3, GETDATE ()), 112) + ''000000'' ') WHERE rcdidx NOT IN (SELECT rowid FROM u_sale_c WHERE saleno = scd COLLATE Chinese_PRC_CS_AS_KS_WS AND accdate >= CONVERT (VARCHAR (8), DATEADD (dd, -3, GETDATE ()), 112))
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)