怎么用两个字段联合建立聚集索引

时间:2022-05-13 10:13:18
现有两个字段:一个是自动生成的ID(查询时用的很少),另一个Stu_no(查询时用的很多,但再这张表里不唯一)。

为了提高查询速度,我认为应该将ID和Stu_no联合起来建立聚集索引,但我不知道怎么用两个字段联合建立聚集索引(我在SQL里用这两个字段联合建立聚集索引时提示无法建立,因为不满足其条件),究竟能不能这样做。

还有一个方案是把Stu_no做成非聚集索引。请大虾们给个提示,究竟哪种方案更能提高查询的速度。

还有就是我更新时也是以Stu_no为条件的,平衡查询和更新的效率,有究竟选用那种方案。

8 个解决方案

#1


CREATE Clustered Index NOIX
  ON dbo.TableName
     (ID,Stu_No)

#2


我刚把Stu_no设为非聚集索引,速度比没有建非聚集索引时快了很多倍(这个表有26万条记录哦).不知道建成聚集索引会跟快一点呢

#3


只能一个字段吧

#4


聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

#5


我是直接在SQL2000里建的,它的SQL Script是
CREATE UNIQUE CLUSTERED
  INDEX [PK_pro_process_over] ON [dbo].[pro_process_over] ([autoId], [stu_no])
WITH
    DROP_EXISTING
ON [PRIMARY]

提示无法建立,已现有的条件不符合,不知道是什么原因

#6


是啊,我是想建立聚集的组合索引,因为我的stu_no不唯一,只有这个方法了

#7


平衡查询和更新的效率,有究竟选用聚集索引还是非聚集索引(我的更新也挺频繁的)。

#8


1.建立一个聚集索引
create unique clustered index
IX_1 on tablename(autoid)
2.建立一个非聚集索引
create index
IX_2 on tablename(autoid,stu_no)

#1


CREATE Clustered Index NOIX
  ON dbo.TableName
     (ID,Stu_No)

#2


我刚把Stu_no设为非聚集索引,速度比没有建非聚集索引时快了很多倍(这个表有26万条记录哦).不知道建成聚集索引会跟快一点呢

#3


只能一个字段吧

#4


聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

#5


我是直接在SQL2000里建的,它的SQL Script是
CREATE UNIQUE CLUSTERED
  INDEX [PK_pro_process_over] ON [dbo].[pro_process_over] ([autoId], [stu_no])
WITH
    DROP_EXISTING
ON [PRIMARY]

提示无法建立,已现有的条件不符合,不知道是什么原因

#6


是啊,我是想建立聚集的组合索引,因为我的stu_no不唯一,只有这个方法了

#7


平衡查询和更新的效率,有究竟选用聚集索引还是非聚集索引(我的更新也挺频繁的)。

#8


1.建立一个聚集索引
create unique clustered index
IX_1 on tablename(autoid)
2.建立一个非聚集索引
create index
IX_2 on tablename(autoid,stu_no)