L liaodm Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #1 原公司用來計算薪資的程序是採用dephi ADO+SQL二層來寫的。sql語句都是寫在代碼裡面,一開始用也沒有什麼問題,可現在隨著公司的擴大。現在計算一次薪資需要花費24個多小時的時間。時間太過長久啦,現在上面要求要想辦法修改。小弟不知道如何是好,請各位給點建議
原公司用來計算薪資的程序是採用dephi ADO+SQL二層來寫的。sql語句都是寫在代碼裡面,一開始用也沒有什麼問題,可現在隨著公司的擴大。現在計算一次薪資需要花費24個多小時的時間。時間太過長久啦,現在上面要求要想辦法修改。小弟不知道如何是好,請各位給點建議
K kite20020304 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #3 不清楚你说的计算薪资是什么意思?<br>有多少数据?计算量有多大?
M maikee1978 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #4 改客户端sql语句为存储过程即可。<br>不过,24小时的计算,这可是什么速度啊。设计肯定有问题
S sunnyfairy Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #5 建议用存储过程,我们公司现在一般的统计全部用存储过程的。
L liaodm Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #6 計算薪資有加有減,主要是還設計到了一些加班的問題,不知道kite20020304大哥有沒有用過鼎薪的ERP,應該跟6個數據表有關聯吧,現公司人員大概在2000人左右。
X xiammy Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #8 先分析你的问题:<br>1。原来系统没问题<br>2。现在很慢了<br><br>那么,系统在这中间出什么问题了?<br>1。数据结构变动?(可能)<br>2。数据量增加<br><br>我估计第二个可能性很高。如果这样的话,<br>那么请针对性地针对对记录多的表的操作,如SQL或存储过程,将这些算法优化(尽量避免得到所有,否则,内存也可能吃不消,而导致windows的虚拟内存使用),<br>应该能得到好的结果。<br><br>Good Luck!
先分析你的问题:<br>1。原来系统没问题<br>2。现在很慢了<br><br>那么,系统在这中间出什么问题了?<br>1。数据结构变动?(可能)<br>2。数据量增加<br><br>我估计第二个可能性很高。如果这样的话,<br>那么请针对性地针对对记录多的表的操作,如SQL或存储过程,将这些算法优化(尽量避免得到所有,否则,内存也可能吃不消,而导致windows的虚拟内存使用),<br>应该能得到好的结果。<br><br>Good Luck!
一 一份子 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #9 对就是用存储过程,这样比较快,也比较安全,<br>再说了,在代码里面,运行起来的速度也不比存储过程快,<br>还有就是要注意像"求质数"一样的问题,不要全部都是去,只让他试到一半就可以了,<br>这样可能也会提高速度,<br>那二十四小时,肯定有问题,我们公司都没有这么长的时间,
对就是用存储过程,这样比较快,也比较安全,<br>再说了,在代码里面,运行起来的速度也不比存储过程快,<br>还有就是要注意像"求质数"一样的问题,不要全部都是去,只让他试到一半就可以了,<br>这样可能也会提高速度,<br>那二十四小时,肯定有问题,我们公司都没有这么长的时间,
浪 浪人情哥 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #10 这是要根据具体情况来看和解决的<br>比如中国移动的每个月的结帐日不是要很多天吗,<br>这就是因为数据量大的原因<br>你的情况不清楚,也不好说<br>正如上面说的<br>1:从算法上改进<br>2:或者改为存储过程
这是要根据具体情况来看和解决的<br>比如中国移动的每个月的结帐日不是要很多天吗,<br>这就是因为数据量大的原因<br>你的情况不清楚,也不好说<br>正如上面说的<br>1:从算法上改进<br>2:或者改为存储过程
X xinjinren Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #13 数据库是SQL SERVER 么<br>如果是就先让它优化一下索引吧<br>看看能改进多少<br>再以视图配合存储过程处理<br>算法上看能不能改进改进
浪 浪人情哥 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #14 搞忘说了一点,如果在程序中有数据感知控件<br>最好把它的DataSet DisableControls这样肯定要快很多
L liaodm Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #16 謝謝大家的建意,小弟這幾天就以各位的建意試試,只要有明顯的改進,馬上結帖
P ProLove Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #17 楼上很多说了,采用后台数据库运行再好,最好就是建存储过程,毕竟SQL Server是专来的数据库,运行效率是很高的,你结合十几个表一起运算也都是没有问题的,肯定就不要结合到代码中运行了,<br>另就是你算法的优法了!你也可以把你原有的算法流程贴出来,供大家给你建议
楼上很多说了,采用后台数据库运行再好,最好就是建存储过程,毕竟SQL Server是专来的数据库,运行效率是很高的,你结合十几个表一起运算也都是没有问题的,肯定就不要结合到代码中运行了,<br>另就是你算法的优法了!你也可以把你原有的算法流程贴出来,供大家给你建议
K kxgkxg Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #19 数据库中的历史数据太多,在计算时,产生临时表进行计算,计算完Update到在用表,<br>计算公式,为先横,再纵
D dinglj1760 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-07 #20 1:用存储过程优化速度。<br>2.对数据库数据进行备份导出,现状库中只留有少量数据;<br>3:查看代码,对里面用到Select * 的语句根据后面用到的字段进行替代。<br>4:如果有可能,换成Oracle。<br>----以上是个人意见。
1:用存储过程优化速度。<br>2.对数据库数据进行备份导出,现状库中只留有少量数据;<br>3:查看代码,对里面用到Select * 的语句根据后面用到的字段进行替代。<br>4:如果有可能,换成Oracle。<br>----以上是个人意见。