全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5006 7
2014-02-13
从MS SQL移植了一段已经调好的代码到SAS中,但是发现在MS SQL中仅用6~7分钟完成,而SAS却用了50分钟,想不明白为什么。。。代码不长,都是从远程数据库查询数据,SAS是通过ODBC连接数据库的。

难道移植代码有什么需要注意的吗?


顺便请教另外一个问题,我在查询代码中使用max()查询了一组日期的最后时间(即距离现在最近的时间),但是结果却存储成了best格式的,请问有什么办法转换成日期格式吗?尝试了format和put都没成功。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-2-13 23:15:25
下午采取了一些措施:关闭了防火墙和安全软件;在Libname语句中添加了readbuff参数。不过貌似查询效率仍然没有太大改进。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-13 23:23:31
sas 的sql的执行相率完全不能和专业的数据库管理软件比较,更何况还通过odbc转换。
你可以尝试使用proc sql步的Pass-Through技术。
The SQL Procedure Pass-Through Facility communicates with the DBMS through the SAS/ACCESS engine.
The facility enables you to do the following:
pass native DBMS SQL statements to a DBMS
display query results formatted by PROC SQL
save query results as SAS data files
create SAS data views containing pass-through queries
示例:
proc sql;
   connect to ACCESS as mydbms
     (path="./sql1.mdb");

title "Report using SQL Passthrough";
   select *
      from connection to mydbms
        (select Product_Name, Price
            from Catalog_2007
            order by Product_Name)
;
   disconnect from mydbms;
quit;


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-14 08:54:58
changgz 发表于 2014-2-13 23:23
sas 的sql的执行相率完全不能和专业的数据库管理软件比较,更何况还通过odbc转换。
你可以尝试使用proc sq ...
多谢,我尝试一下。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-14 11:16:51
changgz 发表于 2014-2-13 23:23
sas 的sql的执行相率完全不能和专业的数据库管理软件比较,更何况还通过odbc转换。
你可以尝试使用proc sq ...
改为pass-through后,查询时间明显缩短了,基本上与SSMS查询的时间一致。

我百度了一下,原因是ODBC的查询方法一直在从服务器复制相应的表到本地,因此耗费了很多时间。这也解释了昨天我发现的一个问题:SSMS运行时,360没有显示有下载速度,而SAS运行时则一直存在本地下载,当时没弄明白,现在才搞清楚。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-14 19:07:05
请问你测试了ODBC连接时耗费了多少流量吗?我猜只是传输部分数据,不是全部表吧。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群