表中有1878万条记录,要检索一条记录,要二三十分钟。求教!
表的结构大致是这样:
SQL code
现在要检索想如下的一条记录,表中有1878万条记录,要二三十分钟,该如何搞呢。
SQL code
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设置聚集索引
单纯的这条可以使用聚集索引,但个人建议使用非聚集索引
sIDNo设置聚集索引
作者: xuexiaodong2009 发布时间: 2011-06-13
就算全表扫描也不必二三十分钟,估计表坏了
dbcc checkdb('tDummyUser')
有什么返回贴出来看看
dbcc checkdb('tDummyUser')
有什么返回贴出来看看
作者: KFCU 发布时间: 2011-06-13
考虑索引;
对于sIDNo来说,这个应该是最适合当聚集索引的列,但是你已经有了一个聚集了4列的索引了
是出于何种考虑才选择这4列呢?
如果没有什么特别的考虑,那么可以把聚集索引建立在sIDNo这一列上而不是那4列一起。
当然
如果那4列是经过考虑的,那么可以在sIDNo上单独建立一个非聚集索引,速度也会有所提升的
对于sIDNo来说,这个应该是最适合当聚集索引的列,但是你已经有了一个聚集了4列的索引了
是出于何种考虑才选择这4列呢?
如果没有什么特别的考虑,那么可以把聚集索引建立在sIDNo这一列上而不是那4列一起。
当然
如果那4列是经过考虑的,那么可以在sIDNo上单独建立一个非聚集索引,速度也会有所提升的
作者: xyc880813 发布时间: 2011-06-13
sIDNo设置聚集索引
作者: maco_wang 发布时间: 2011-06-13