起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 403|回复: 16

新大洲-数据集读取方式问题**

[复制链接]
发表于 2007-8-2 10:46:45 | 显示全部楼层 |阅读模式
版本:x3 2619
数据库:sqlserver 2000
问题描述:数据集取数据时,取数据方案datafatch的PageRecords属性设置成10,界面表现正确。但在系统日志里和Sql事件探测器中看到系统最终取数据的时候,还是取了所有的数据。
日志文件如下(包含monitorlog.sqb和Sql跟踪文件):

monitorlog_2007080.rar

90.95 KB, 下载次数: 107

回复

使用道具 举报

发表于 2007-8-2 11:55:03 | 显示全部楼层
楼主,请把监控打开,把bizMonitor也传上来也一起上传上来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-2 13:51:55 | 显示全部楼层
压缩包里sqb文件就是了
回复 支持 反对

使用道具 举报

发表于 2007-8-2 14:15:39 | 显示全部楼层
好,正在看,有结果马上跟贴反馈
回复 支持 反对

使用道具 举报

发表于 2007-8-2 15:10:27 | 显示全部楼层
楼主,你是看哪里,说取到所有,
你打开日志,标注一下,好吗?
看附件图,取了10条,消耗390毫秒,

1.gif

10.62 KB, 下载次数: 209

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-2 15:54:39 | 显示全部楼层
日志是显示10条,但Sql跟踪日志执行的是取所有记录。390ms 也不是取10条记录因该用的时间,还有TSTKSALEOUTERDET是从表,但打开见面的时候会执行SELECT *  FROM TSTKSALEOUTERDET 这表有几万条记录严重影响速度。
回复 支持 反对

使用道具 举报

发表于 2007-8-2 16:18:41 | 显示全部楼层
sql跟踪不到 count=10

另外,系统可能会额外执行一些select语句,但是都没有从服务器端取回数据,是用来做一些控制的。
如:记录条数、表结构

从表执行SELECT *  FROM TSTKSALEOUTERDET就是在取表结构。

另外,当从表数据多时,数据库服务器在执行取表结构的动作时速度会慢(在扫描索引)
可以考虑优化一下,或者改下sql语句,如:SELECT top 100 *  FROM TSTKSALEOUTERDET
回复 支持 反对

使用道具 举报

发表于 2007-8-2 16:40:09 | 显示全部楼层
既然没有从服务器上取数据,那:
SELECT top 100 *  FROM TSTKSALEOUTERDET

SELECT *  FROM TSTKSALEOUTERDET
应该是没有区别了,加与不加都没有意义。

现在的现象就是: 加上:select * from ... 12秒,select top 0 from ... 3秒。

平台这方面应该有一定的优化空间
比如取记录数方法与时机?
特别从数据集执行SELECT *  FROM TSTKSALEOUTERDET个人认为没有必要
回复 支持 反对

使用道具 举报

发表于 2007-8-2 16:50:24 | 显示全部楼层
今日特意请刘素杰老师给我们做诊断,结果耗时最多的就是上述代码
回复 支持 反对

使用道具 举报

发表于 2007-8-2 17:07:04 | 显示全部楼层
既然没有从服务器上取数据,那:
SELECT top 100 *  FROM TSTKSALEOUTERDET

SELECT *  FROM TSTKSALEOUTERDET
应该是没有区别了,加与不加都没有意义。


不管数据库是否返回数据,在数据库服务器端执行sql语句都要扫描索引,数据越多,这个时间越长。
所以,如果你加了top 0 ,速度会快很多。

从数据集执行SELECT *  FROM TSTKSALEOUTERDET
是为了获取表结构,必须要。如果换成其他方式,效率更低。


建议楼主对数据库做一些优化,应该可以提高一些速度。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 16:43 , Processed in 0.039140 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表