經驗豐富的各位大家請進來看看,關於計算薪資的問題(100分)

  • 主题发起人 主题发起人 liaodm
  • 开始时间 开始时间
L

liaodm

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