是单独对Event_GUID设的索引,还是几个字段的联合索引?最好是前者。
另外,你的数据量很大,更新的内容很多,可以把超时设长一些。

解决方案 »

  1.   

    EVENT_GUID是单独的一个索引,这个索引里只有这一个字段的,可是更新花费时间要达7,8秒,这还算快的啊。不然要15秒左右。
    单独设置这个超时时长有用吗?
      

  2.   

    超时时间设置长解决不了根本问题,建议还是要优化,如对Event_GUID建立索引 360W的数据应该还是不大的
      

  3.   

    6楼说的:超时时间设置长解决不了根本问题 我认为说的有道理,可是我已经对Event_GUID建立索引了啊。为什么还这么慢呢?
      

  4.   

    Sql Server数据库超时问题的解决方法
      

  5.   

    该表的结构为:
    CREATE TABLE [dbo].[EVENT](
    [EVENT_GUID] [char](36) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [CALLTYPE] [char](1) COLLATE Chinese_PRC_CI_AS NULL,
    [CUSTOMER_GUID] [char](36) COLLATE Chinese_PRC_CI_AS NULL,
    [DNIS] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    [ANI] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    [TRANSFERFROM] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    [TRANSFTERTO] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    [CALLSTARTTIME] [datetime] NULL,
    [CALLENDTIME] [datetime] NULL,
    [HANGUPTYPE] [char](1) COLLATE Chinese_PRC_CI_AS NULL,
    [WORKSTARTTIME] [datetime] NULL,
    [WORKENDTIME] [datetime] NULL,
    [CALLRESULT_ID] [char](6) COLLATE Chinese_PRC_CI_AS NULL,
    [CALLRESULTREASON_ID] [char](6) COLLATE Chinese_PRC_CI_AS NULL,
    [HANDLEBY_ID] [char](6) COLLATE Chinese_PRC_CI_AS NULL,
    [HANDLEGROUP_ID] [char](6) COLLATE Chinese_PRC_CI_AS NULL,
    [SATISFIEDRATE] [char](6) COLLATE Chinese_PRC_CI_AS NULL,
    [STRINGFIELD1] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    [STRINGFIELD2] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    [ATTACHEDDATA] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [OBJECTIVESTATUS] [char](6) COLLATE Chinese_PRC_CI_AS NULL,
    [CALLBEGINTIME] [datetime] NULL,
    [CALLESTABLISHED] [int] NULL,
    [RECORD_GUID] [char](36) COLLATE Chinese_PRC_CI_AS NULL,
    [transferresult] [int] NULL,
    [comments] [varchar](500) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]该表总共建了6个索引:
    CREATE NONCLUSTERED INDEX [ix_event_workstarttime] ON [dbo].[EVENT] 
    (
    [WORKSTARTTIME] ASC
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]CREATE NONCLUSTERED INDEX [ix_event_dnis] ON [dbo].[EVENT] 
    (
    [DNIS] ASC
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]CREATE NONCLUSTERED INDEX [ix_event_customer_guid] ON [dbo].[EVENT] 
    (
    [CUSTOMER_GUID] ASC
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]CREATE NONCLUSTERED INDEX [ix_event_callstarttime] ON [dbo].[EVENT] 
    (
    [CALLSTARTTIME] ASC
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]CREATE NONCLUSTERED INDEX [handleby_id] ON [dbo].[EVENT] 
    (
    [HANDLEBY_ID] ASC
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]CREATE NONCLUSTERED INDEX [EVENT_GUID] ON [dbo].[EVENT] 
    (
    [EVENT_GUID] ASC
    )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]可就是UPDATE Event SET Event_GUID='9A3BC39F-213B-434C-8AB8-857CB9665946',CallType='1',Customer_GUID='FA9EB93A-042F-45C9-950F-3D18F1C809A9',DNIS='2138429999',ANI='013506435188',TransferFrom=NULL,TransfterTo=NULL,CallStartTime='2009-06-12 13:09:22',CallEndTime='2009-06-12 13:18:00',HangupType='1',WorkStartTime='2009-06-12 13:09:22',WorkEndTime='2009-06-12 13:19:40',CallResult_ID='CLOSE',HandleBy_ID='E8C3DD',HandleGroup_ID='campn',StringField1='CTI',CALLBEGINTIME='2009-06-12 13:09:19',CALLESTABLISHED=1,COMMENTS='订购' WHERE Event_GUID='9A3BC39F-213B-434C-8AB8-857CB9665946' 
    更新这样的记录就报”超时已过期“. 如何解决????