表中有1878万条记录,要检索一条记录,要二三十分钟。求教!

表的结构大致是这样:
SQL code

CREATE TABLE [dbo].[tDummyUser](
    [sAccount] [varchar](128) NOT NULL,
    [sServiceType] [varchar](10) NOT NULL,
    [sIDCode] [varchar](3) NOT NULL,
    [sIDNo] [varchar](18) NOT NULL,
    [sUserName] [varchar](60) NULL,
    [sCardType] [varchar](2) NULL,
    [sCardOutNum] [varchar](20) NULL,
 CONSTRAINT [PK_tDummyUser] PRIMARY KEY CLUSTERED 
(
    [sAccount] ASC,
    [sServiceType] ASC,
    [sIDCode] ASC,
    [sIDNo] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]



现在要检索想如下的一条记录,表中有1878万条记录,要二三十分钟,该如何搞呢。
SQL code

SELECT [sAccount]
      ,[sServiceType]
      ,[sIDCode]
      ,[sIDNo]
      ,[sUserName]
      ,[sCardType]
      ,[sCardOutNum]
  FROM [NDVUser09].[dbo].[tDummyUser]
where sIDNo='411302198911011101'


作者: yagerrr123   发布时间: 2011-06-13

再加个索引试试!

作者: AcHerat   发布时间: 2011-06-13

sIDNo加个索引试试!

作者: happyideal   发布时间: 2011-06-13

sIDNo设置聚集索引

作者: fredrickhu   发布时间: 2011-06-13

引用 3 楼 fredrickhu 的回复:

sIDNo设置聚集索引
单纯的这条可以使用聚集索引,但个人建议使用非聚集索引

作者: xuexiaodong2009   发布时间: 2011-06-13

就算全表扫描也不必二三十分钟,估计表坏了

dbcc checkdb('tDummyUser')
有什么返回贴出来看看

作者: KFCU   发布时间: 2011-06-13

考虑索引;
对于sIDNo来说,这个应该是最适合当聚集索引的列,但是你已经有了一个聚集了4列的索引了
是出于何种考虑才选择这4列呢?
如果没有什么特别的考虑,那么可以把聚集索引建立在sIDNo这一列上而不是那4列一起。
当然
如果那4列是经过考虑的,那么可以在sIDNo上单独建立一个非聚集索引,速度也会有所提升的

作者: xyc880813   发布时间: 2011-06-13

sIDNo设置聚集索引

作者: maco_wang   发布时间: 2011-06-13