当前位置:  开发笔记 > 数据库 > 正文

SAS中的SQL Passthrough

如何解决《SAS中的SQLPassthrough》经验,为你挑选了2个好方法。

使用SQL Passthrough工具和SAS有什么好处吗?



1> AFHood..:

虽然这个问题过于宽泛,但我可以提供过于广泛的答案.

SAS中的传递SQL允许您直接与数据库通信.当您使用特定于数据库的功能时,这将变得非常有利.一个例子是Oracle的统计功能.您不必担心SAS将如何处理您的编码或翻译您的SQL.

此外,对我们来说,传递SQL需要在SAS端进行非常少的处理也是一个好处.如果您有一个非常繁忙的SAS框,您可以选择将处理逻辑直接发送到数据库.这可以在不使用Pass-through SQL的情况下实现,但在使用时可以获得更高程度的控制.

这绝不是一个详尽的好处列表,只是使用传递SQL的一些高级特权.如果您有更具体的用例,我们可以讨论编码技术的具体差异.



2> 小智..:

PROC SQL会尝试将尽可能多的逻辑传递给数据库,但有时它不能.使用在数据库中没有等效的SAS函数(或在数据库的SAS/ACCESS引擎中)将阻止将整个查询传递到数据库.当查询未完全传递到数据库时,数据将被拉入SAS并在那里处理.SQL越复杂,最终在SAS中处理的可能性就越大.这是一个比您可能意识到的更大差异的案例.

libname db  path=dbserver user=... password=...;
proc sql;
   create table db.new as
   select * from db.largedata where flag=1;
quit;

这实际上(至少通过SAS 9.1.3)将所有匹配flag = 1的数据下拉到SAS,然后将其加载回数据库.它真的减慢了数百万行.

在这种情况下,您会发现显式传递速度更快.

proc sql;
   connect dbase (server=dbserver user=... password=...);
   execute (create table db.new as
   select * from db.largedata where flag=1) as dbase;
   disconnect dbase;
quit;

我最近使用Oracle和一个大约250,000行的表做了一个例子.第一种方式需要20秒,第二种方式需要2秒.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有