当前位置: 代码迷 >> Sql Server >> sql server2008执行某个插入语句 揭示数据库锁死
  详细解决方案

sql server2008执行某个插入语句 揭示数据库锁死

热度:19   发布时间:2016-04-24 09:57:18.0
sql server2008执行某个插入语句 提示数据库锁死
因为要报表数据, 我的做法是用insert into 插入数据 但是每次都是提示锁死,但是我那张表只是给领导看的 不存在什么更新

而且在本地的数据库上面 可以执行,放到真实的数据上面就是被锁死

看到有的说是因为sql语句优化问题

insert into APP_CreditReport(SelectData, QianDao, WxZP, App, ADActive, Tj, Tx, Active, XR, QianDaoCount, WxZPCount, AppCount, ADActiveCount, TjCount, TxCount, ActiveCount, XRCount) values(
CONVERT(varchar(100), GETDATE()-1, 23),
(select  SUM(Credit) from App_UserCredit where Memo='APPQD' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select  sum(Credit) from App_UserCredit where Memo='WXZP' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select  sum(Credit) from App_UserCredit where Memo='app' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select  sum(Credit) from App_UserCredit where Memo='ADActivity' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select  sum(Credit) from App_UserCredit where Memo='APPHYTJZC' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select  sum(Credit) from App_UserCredit where Memo='APPHYTJTX' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select  case when sum(Credit) IS null then 0 else SUM(Credit) end from App_UserCredit where Memo='Activity' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select  sum(Credit) from App_UserCredit where substring(Memo,1,2)='XR' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='APPQD' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='WXZP' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='app' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='ADActivity' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='APPHYTJZC' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='APPHYTJTX' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='Activity' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0),
(select COUNT(distinct APPUserName) from App_UserCredit where Memo='XRTJ' and DATEDIFF(DAY,OPdatetime,GETDATE()-1)=0)
)


求大神帮忙  刚刚工作 不太会优化 sql语句
------解决思路----------------------
引用:
Quote: 引用:

INSERT  INTO APP_CreditReport
        ( SelectData ,
          QianDao ,
          WxZP ,
          App ,
          ADActive ,
          Tj ,
          Tx ,
          Active ,
          XR ,
          QianDaoCount ,
          WxZPCount ,
          AppCount ,
          ADActiveCount ,
          TjCount ,
          TxCount ,
          ActiveCount ,
          XRCount
        )
VALUES  ( CONVERT(VARCHAR(100), GETDATE() - 1, 23) ,
          ( SELECT  SUM(Credit)
            FROM    App_UserCredit
            WHERE   Memo = 'APPQD'
                    AND DATEDIFF(DAY, OPdatetime, GETDATE() - 1) = 0
          ) ,
          ( SELECT  SUM(Credit)
            FROM    App_UserCredit
            WHERE   Memo = 'WXZP'
                    AND DATEDIFF(DAY, OPdatetime, GETDATE() - 1) = 0
  相关解决方案