U872每月都须要做月结,对于制造企业来说,结算成本处理是不可缺少的一个处理环节,每次查询出来待暂估记录也比較多(我接触到的有3万左右),暂估时间一般要2-3小时左右,若调用的大表索引碎片多时,会须要更长的时间,先看一下处理过程调用的主要步骤及脚本有哪些:

第一步:取存货模块的最新会计期间

SELECT MAX(iPeriod) AS CurMonth FROM GL_mEnd WHERE bFlag_IA=1

第二步:取入库单明细账记录

Select top 1 rdrecords.autoid from rdrecords inner join ia_subsidiary 
    on rdrecords.autoid=ia_subsidiary.id Where ia_subsidiary.CvouType = N'01'
    and isnull(rdrecords.iquantity,0)=isnull(rdrecords.isquantity,0) 
    and rdrecords.autoid=5403479 And ia_subsidiary.imonth=6

第三步:取存货总账表记录

Select * from Ia_Summary 
    where   cinvcode= N'021299000098' And IsNull(iDirect, 0) = 0 
        and IsNull(Ia_Summary.iPeriod, 0) <> 0 And Ia_Summary.iMonth = 6 

第四步:取採购结算单主从档记录

select PSVID from pursettlevouch where PSVID=32128
Select * From PurBillVouchs Where ID=1709941

第五步:取存货明细表记录

Select Autoid From ia_subsidiary 
    Where ID=5403457 And iMonth=6 And (cVouType= N'01' Or (cVouType= N'30' and cSrcVouType=N'01')) 
    
Select iMonth,cPZID ,*  from ia_subsidiary 
    where  (cVouType= N'01' or (cVouType= N'33' and cSrcVouType=N'01')) 
        and (bflag=1 or bflag=2) and id=5403457
Select top 1 * from ia_subsidiary 
    where (CVOUTYPE='01' OR ((CVOUTYPE='33' or CVOUTYPE='30') 
        and csrcvoutype='01' )) and id=5403457 And bFlag=1 order by autoid desc
Select * from ia_subsidiary where  CVOUTYPE= N'24' and id=5403457 and imonth=6 and cSRcvoutype='01'
Select Top 1 * From Ia_Subsidiary Where AutoID=1091064

第六步:新增存货明细账记录

insert into IA_Subsidiary (bRdFlag, cBusType, cBusCode, cVouCode, ID, ValueID, JustID, dVouDate,
    dKeepDate, iMonth, iPZID, cInvHead, cDifHead, cVouType, cPTCode, cSTCode,cWhCode, 
    cInvCode,cAccDep, cRdCode, cCusCode,cBillCode, cDLCode, cPSPCode, cProCode, cDepCode,
    cPersonCode,iAInQuantity,iAOutQuantity, iInCost, iOutCost,iAInPrice, iAOutPrice,
    iDebitDifCost, iCreditDifCost,cBatchCode, cMaker,cAccounter, bFlag, bMoneyFlag, 
    bSale, cMemo,cDefine1, cDefine2, cDefine3,cDefine4, cDefine5, cDefine6,cDefine7, 
    cDefine8, cDefine9,cDefine10, cDefine11,cDefine12,cDefine13,cDefine14,cDefine15,
    cDefine16,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10,
    cdefine22,cdefine23,cdefine24,cdefine25,cdefine26,cdefine27,cdefine28,cdefine29,
    cdefine30,cdefine31,cdefine32,cdefine33,cdefine34,cdefine35,cdefine36,cdefine37,
    citem_class,citemcode,citemcname,cVenCode,cHandler,cOrderCode,cARVCode,cName,
    cBatchia,dMadeDateia,iMassDateia,cMassUnit,dVDateia,cproordercode,iproorderid,
    iproorderids,cworkprocode,cworkprocodedis,cworkcentercode,cworkcentername,cendcode,
    csaleordercode,isaleorderid,isaleordersid,isaleorderids,centrustordercode,ientrustorderid,
    ientrustordersid,ipurordersid,idlsid,cAssUnit,inum,strContractCode,cpurordercode,exoCode,
    iExRowno,consignMentCode,iconsignmentautoid,imaterialfee,iprocessfee,cSRcVouType,
    cDemandCode,cDemandMemo,cIMOrdercode)
    values (1,N'普通採购',null,N'TL20140519396',5403457,null,null,'2014-05-19','2014-06-25',
        6,1603742,null,null,N'24',N'01',null,N'07',N'021299000098',N'6901',N'101',null,null,null,
        null,null,null,N'07409',-20,null,1.0769,null,-21.54,null,null,null,null,N'lml',N'lh',
        N'1',0,0,null,N'0911',null,null,null,null,null,0,null,null,null,null,N'PO00001903',
        null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,N'4',
        N'CP140404-040',null,0,0,null,null,N'CPWG1404-075',N'PO00001903',null,null,null,null,
        null,null,null,null,null,N'001587',N'yql',N'TLWG-140400006151',N'TL201405160263',
        null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
        null,null,null,1916612,null,null,null,null,N'TLWG-140400006151',null,null,null,null,null,
        null,N'01',null,null,null)

第七步:取存货档案的核算自由项

Select bCheckFree1,bCheckFree2,bCheckFree3,bCheckFree4,bCheckFree5,bCheckFree6,bCheckFree7,
        bCheckFree8,bCheckFree9,bCheckFree10 FROM inventory where cInvcode= N'021299000098'

第八步:写总账

Exec IA_WriSummary 按仓库核算,2,6, N'07', N'021299000098', N'', N'', N'', N'', N'', 
                    N'', N'', N'', N'', N'',-20,-21.54,0,0,0,0

注:数量是负数

第九步:反复运行第六步的脚本

第十步:写总账

<span style="font-size:12px;">Exec IA_WriSummary 按仓库核算,2,6, N'07', N'021299000098', N'', N'', N'', N'', N'', N'', N'', N'', N'', N'',20,21.54,0,0,0,0</span>

注:数量为正数

结算成本处理涉及到的大表有 出入库明细表rdrecords。总账明细表ia_subsidiary,採购结算单明细表PurBillVouchs

若要保证暂估的速度,须要对优化处理:

第一步:临时禁用SQL代理中的一些计划任务。如备份、同步等

第二步:点【暂估】button前。一定要对rdrecords,Ia_Summary ,ia_subsidiary,PurBillVouchs,Inventory,Ia_Summary 重建或整理索引,索引碎片能够用dbo.fn_ShowIndexSP函数,重建索引能够用Dyl_ReindexNew过程

第三步:检查这些表的索引的碎片是否已所有在10下面。若是表示所有整理成功!

能够做结算成本处理的暂估操作了。

/*
功能:显示指定表的索引碎片
创建人:baronyang
创建时间:2014-07-02
select * from dbo.fn_ShowIndexSP('')
*/
Alter function dbo.fn_ShowIndexSP
(
@tablename varchar(255)
)
returns @table table (tablename varchar(255),indexname varchar(255),spbl int)
as
BEGIN
DECLARE @dbid int,@objid int
select @dbid=DB_ID(),@objid=OBJECT_ID(@tablename)
insert into @table (tablename,indexname,spbl)
SELECT c.name,b.name,avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(@dbid,@objid,NULL,NULL,NULL) as a
inner JOIN sys.indexes b on a.object_id=b.object_id and a.index_id=b.index_id
inner JOIN sys.objects c on a.object_id=c.object_id
where b.index_id>0 and avg_fragmentation_in_percent>=1
return
end
/*
功能:重建整理
创建人:baronyang
创建时间:2014-07-02
exec Dyl_ReindexNew 'KQ_OtherData'
select * from dbo.fn_showindexsp('KQ_OtherData')
*/
Alter procedure dbo.Dyl_ReindexNew
@TableName varchar(255),
@indexname varchar(255)=''
as
set nocount on declare @dbid int,@objid int,@sql varchar(1000)
select @dbid=DB_ID(),@objid=isnull(OBJECT_ID(@TableName),0)
if @objid=0
BEGIN
print @TableName+'表不存在'
return
End
IF Exists(SELECT * FROM sys.dm_db_index_physical_stats(@dbid,@objid,NULL,NULL,NULL)
where avg_fragmentation_in_percent>30 and index_id>0
) and @objid>0
BEGIN
set @sql='alter index '+case when isnull(@indexname,'')<>'' THEN @indexname else 'all' END
+' on '+@TableName+' rebuild WITH(online=on,STATISTICS_NORECOMPUTE=ON)'
exec (@SQL)
End IF Exists(SELECT * FROM sys.dm_db_index_physical_stats(@dbid,@objid,NULL,NULL,NULL)
where avg_fragmentation_in_percent>30 and index_id>0 and @objid>0
)
print @TableName+'表索引碎片还是超过30。请手动重建索引'

U872-结算成本处理步骤及索引处理的更多相关文章

  1. 使用SQL Server 2000索引视图提高性能

    什么是索引视图? 许多年来,Microsoft? SQL Server? 一直都提供创建虚拟表(称为视图)的功能.在过去,这些视图主要有两种用途: 提供安全机制,将用户限制在一个或多个基表中的数据的某 ...

  2. Mysql 索引原理及优化

    本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...

  3. SD从零开始47-50, 装运成本基础、控制、结算, 信用/风险管理概述

    [原创] SD从零开始47 装运成本基础 详细的装运成本处理Shipment Cost Processing in Detail 装运成本计算和装运成本结算可用于内向和外向交货: 装运成本记录在一张新 ...

  4. (转)Mysql 索引原理及优化

    本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...

  5. SQL Server 索引知识-应用,维护

    创建聚集索引 a索引键最好唯一(如果不唯一会隐形建立uniquier列(4字节)确保唯一,也就是这列都会复制到所有非聚集索引中) b聚集索引列所占空间应尽量小(否则也会使非聚集索引的空间变大) c聚集 ...

  6. SQL Server 查询优化 索引的结构与分类

    一.索引的结构 关系型数据库中以二维表来表达关系模型,表中的数据以页的形式存储在磁盘上,在SQL SERVER中,数据页是磁盘上8k的连续空间,那么,一个表的所有数据页在磁盘上是如何组织的呢?分两种情 ...

  7. sql server 索引总结三

    一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向 ...

  8. SQLServer存储引擎——06.索引的遍历与维护

    一.遍历 索引树的每个节点都是一个页面. 索引树有三种类型的节点:根节点.中间节点.叶子节点. (1) 根节点与中间节点一样,只包含下一层节点的入口值与入口指针,它们称为索引节点: (2) 叶子节点包 ...

  9. 为何在查询中索引未被使用 (Doc ID 1549181.1)

        To Bottom * 为何在查询中索引未被使用 (Doc ID 1549181.1) To Bottom 文档内容 用途   排错步骤   高速检查   表上是否存在索引?   索引是否应该 ...

随机推荐

  1. java基础学习总结——对象转型

    一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...

  2. Big Number------HDOJ杭电1212(大数运算)

    Problem Description As we know, Big Number is always troublesome. But it's really important in our A ...

  3. [翻译] RBBAnimation,让你使用关键帧动画更便利

    RBBAnimation RBBAnimation is a subclass of CAKeyframeAnimation that allows you to declare your anima ...

  4. java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

    最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...

  5. mybatis查询时间段sql语句

    转载自:http://blog.csdn.net/zl544434558/article/details/24428307?utm_source=tuicool&utm_medium=refe ...

  6. Android系统file_contexts二进制与文本转换工具

    #ifdef _WIN32 #define __USE_MINGW_ANSI_STDIO 1 #endif #include <stdio.h> #include <stdlib.h ...

  7. waf bypass

    1.前言 去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常谈的话题也没什么可写的.很多人一遇到waf就发懵,不知如何是好,能搜到的各种姿势也是然并卵.但是积累姿势的过程也是迭代的 ...

  8. go语言基础之切片的创建和截取

    1.切片的创建 示例: package main //必须有个main包 import "fmt" func main() { //切片和数组的区别 //数组[]里面的长度时固定的 ...

  9. JQuery缓冲加载图片插件lazyload.js的使用方法

    lazyload.js是一个基于JQuery的插件,可以用来缓冲加载图片.如果一个网页很长并且有很多图片的话,下载图片就需要很多时间,那么就会影响整个网页的加载速度,而这款延迟加载插件,会通过你的滚动 ...

  10. C# 的三种序列化方法

    序列化是将一个对象转换成字节流以达到将其长期保存在内存.数据库或文件中的处理过程.它的主要目的是保存对象的状态以便以后需要的时候使用.与其相反的过程叫做反序列化. 序列化一个对象 为了序列化一个对象, ...