楼主: bjpucl
4607 7

PROC SQL查询时间(效率)的问题 [推广有奖]

  • 0关注
  • 0粉丝

博士生

24%

还不是VIP/贵宾

-

威望
0
论坛币
64 个
通用积分
4.2033
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
23059 点
帖子
229
精华
0
在线时间
274 小时
注册时间
2010-4-8
最后登录
2023-5-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
从MS SQL移植了一段已经调好的代码到SAS中,但是发现在MS SQL中仅用6~7分钟完成,而SAS却用了50分钟,想不明白为什么。。。代码不长,都是从远程数据库查询数据,SAS是通过ODBC连接数据库的。

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


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

二维码

扫码加我 拉你入群

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

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

关键词:proc sql ROC sql format 数据库查询 连接数据库 数据库查询

沙发
bjpucl 发表于 2014-2-13 23:15:25 |只看作者 |坛友微信交流群
下午采取了一些措施:关闭了防火墙和安全软件;在Libname语句中添加了readbuff参数。不过貌似查询效率仍然没有太大改进。。。

使用道具

藤椅
changgz 发表于 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;


使用道具

板凳
bjpucl 发表于 2014-2-14 08:54:58 |只看作者 |坛友微信交流群
changgz 发表于 2014-2-13 23:23
sas 的sql的执行相率完全不能和专业的数据库管理软件比较,更何况还通过odbc转换。
你可以尝试使用proc sq ...
多谢,我尝试一下。。。

使用道具

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

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

使用道具

地板
changgz 发表于 2014-2-14 19:07:05 |只看作者 |坛友微信交流群
请问你测试了ODBC连接时耗费了多少流量吗?我猜只是传输部分数据,不是全部表吧。

使用道具

7
bjpucl 发表于 2014-2-15 21:09:54 |只看作者 |坛友微信交流群
changgz 发表于 2014-2-14 19:07
请问你测试了ODBC连接时耗费了多少流量吗?我猜只是传输部分数据,不是全部表吧。
超过50分钟,在libname语句增加了readbuff=32767后,花了3个小时~

使用道具

8
bjpucl 发表于 2014-2-17 10:38:11 |只看作者 |坛友微信交流群
changgz 发表于 2014-2-14 19:07
请问你测试了ODBC连接时耗费了多少流量吗?我猜只是传输部分数据,不是全部表吧。
耗费流量的总量没有细算,但是我看了,下载速度一直保持在400kb/s~~~

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 05:34