起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: jwei

【搞定】流程流转时速度慢!如何优化**

[复制链接]
 楼主| 发表于 2007-11-15 08:47:46 | 显示全部楼层
select FGUID from TORGSYSTEM where FGUID IN (SELECT b.FGUID FROM TORGSYSTEM b, TORGSYSTEM a where a.FGUID IN (SELECT FGUID FROM TORGSYSTEM WHERE (FGUID in (select FGUID from TORGINDEX where UPPER(FID) = 'ORGUNIT.FUNCREF' and UPPER(FVALUE) = 'YTSBGLXTDXLSQDWSH.FUNC')))  AND b.FGUID IN (SELECT FGUID FROM TORGSYSTEM WHERE ( (UPPER(FFILENAME) LIKE '%.PSM') ))  AND ((( (b.FPATH LIKE a.FPATH || a.FID || a.FKIND || '\%') OR ((a.FKIND = '.PTN') AND ((b.FID = a.FID AND b.FKIND = '.PTM') OR (b.FPATH || b.FID || b.FKIND LIKE '%' || a.FID || '.PTM' || '\%'))) ) OR ( a.FPATH || a.FID || a.FKIND = b.FPATH || b.FID || b.FKIND )))) and FDELETELEVEL = 0

tp.jpg

55.75 KB, 下载次数: 127

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-15 08:51:08 | 显示全部楼层
我觉得SQL语句需要优化。
回复 支持 反对

使用道具 举报

发表于 2007-11-15 13:22:42 | 显示全部楼层
相同的库,相同的sql语句,我们这里只需要不到1秒,我觉得先优化数据库使他能达到我们这里的效果再考虑优化sql的问题吧。
回复 支持 反对

使用道具 举报

发表于 2007-11-15 14:22:12 | 显示全部楼层
同样的SQL语句,执行结果与数据量大小是有关的,当数据量小,SQL语句写得效率不高,反映不出来,SQL中有4个IN,当数据量大的时候,可能会执行得慢,数据量越大,会执行得越慢。我这里,是我本机的数据库,只有一个用户在用。如何优化数据库。
回复 支持 反对

使用道具 举报

发表于 2007-11-15 15:15:22 | 显示全部楼层
楼主,40楼执行用的是您给的组织机构库。
回复 支持 反对

使用道具 举报

发表于 2007-11-15 16:32:32 | 显示全部楼层
上次组织机构是我们同事给你发的,不知道是否同一个,他出差了,我看见该问题没有解决,我跟的贴。第一、我核对了初始化库的组织机构索引,索引与初始化库一样。第二、我用doctort.exe重建了索引。不知道是什么原因。
回复 支持 反对

使用道具 举报

发表于 2007-11-16 13:32:12 | 显示全部楼层
哦,我现在执行你的那段sql出来的记录跟我们不同,
回复 支持 反对

使用道具 举报

发表于 2007-11-16 14:58:48 | 显示全部楼层
已经在电话沟通过了,
感觉应该跟数据库自身有关系,因为同一个SQL语句,同一表执行的结果出现两个差异非常大的现象,我们需要不到1S,而你们需要10S多,这已经不是一个级别的,所以需要楼主重新按照一个数据库,然后把36楼的SQL涉及到的表导进去,然后执行看看,需要多少S,如果需要1S,然后在再这个数据库上还原现在运行的数据库,看看流转的速度是怎样的,

等候楼主反馈佳音了:)
回复 支持 反对

使用道具 举报

发表于 2007-11-20 09:37:57 | 显示全部楼层
再次电话询问测试结果,他们说由于现在比较忙,到现在还没有进行测试,说这周肯定有一个结果给我们反馈过来,
回复 支持 反对

使用道具 举报

发表于 2007-11-22 11:59:01 | 显示全部楼层
我用下面的语句,执行时间为12.562秒
select FGUID from TORGSYSTEM  where fguid in  
(SELECT b.fguid FROM TORGSYSTEM b, TORGSYSTEM a where  a.FGUID IN
(SELECT FGUID FROM TORGSYSTEM WHERE
(FGUID in
(select FGUID from TORGINDEX where UPPER(FID) = 'ORGUNIT.FUNCREF'
and UPPER(FVALUE) = '\YTSBGLXT\DXLSQDWSH.FUNC')))  AND
b.FGUID IN (SELECT FGUID FROM TORGSYSTEM WHERE ( (UPPER(FFILENAME) LIKE '%.PSM') ))  
AND ((( (b.FPATH LIKE a.FPATH || a.FID || a.FKIND || '\%') OR ((a.FKIND = '.PTN')
AND ((b.FID = a.FID AND b.FKIND = '.PTM')
OR (b.FPATH || b.FID || b.FKIND LIKE '%\' || a.FID || '.PTM' || '\%'))) )
OR ( a.FPATH || a.FID || a.FKIND = b.FPATH || b.FID || b.FKIND ))))
and FDELETELEVEL = 0

我用下面的语句,并去掉原and FDELETELEVEL = 0条件,只需要0.125秒
select FGUID from TORGSYSTEM  where fguid in  
(SELECT b.fguid FROM TORGSYSTEM b, TORGSYSTEM a where  a.FGUID IN
(SELECT FGUID FROM TORGSYSTEM WHERE
(FGUID in
(select FGUID from TORGINDEX where UPPER(FID) = 'ORGUNIT.FUNCREF'
and UPPER(FVALUE) = '\YTSBGLXT\DXLSQDWSH.FUNC')))  AND
b.FGUID IN (SELECT FGUID FROM TORGSYSTEM WHERE ( (UPPER(FFILENAME) LIKE '%.PSM') ))  
AND ((( (b.FPATH LIKE a.FPATH || a.FID || a.FKIND || '\%') OR ((a.FKIND = '.PTN')
AND ((b.FID = a.FID AND b.FKIND = '.PTM')
OR (b.FPATH || b.FID || b.FKIND LIKE '%\' || a.FID || '.PTM' || '\%'))) )
OR ( a.FPATH || a.FID || a.FKIND = b.FPATH || b.FID || b.FKIND ))))


我用下面的SQL语句,将and FDELETELEVEL = 0改为to_char(FDELETELEVEL) = 0只需要0.156秒
select FGUID from TORGSYSTEM  where fguid in  
(SELECT b.fguid FROM TORGSYSTEM b, TORGSYSTEM a where  a.FGUID IN
(SELECT FGUID FROM TORGSYSTEM WHERE
(FGUID in
(select FGUID from TORGINDEX where UPPER(FID) = 'ORGUNIT.FUNCREF'
and UPPER(FVALUE) = '\YTSBGLXT\DXLSQDWSH.FUNC')))  AND
b.FGUID IN (SELECT FGUID FROM TORGSYSTEM WHERE ( (UPPER(FFILENAME) LIKE '%.PSM') ))  
AND ((( (b.FPATH LIKE a.FPATH || a.FID || a.FKIND || '\%') OR ((a.FKIND = '.PTN')
AND ((b.FID = a.FID AND b.FKIND = '.PTM')
OR (b.FPATH || b.FID || b.FKIND LIKE '%\' || a.FID || '.PTM' || '\%'))) )
OR ( a.FPATH || a.FID || a.FKIND = b.FPATH || b.FID || b.FKIND ))))
and to_char(FDELETELEVEL) = 0
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-2 05:41 , Processed in 0.045650 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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